Encountered while doing link conversion. Shrimp link decryption A bit annoying, the solution is I look at someone else's source. Then I turned him into a PHP version. Paste it out, there is a need to take to use the ~
$mp 3_id = ';//music ID function unescape ($str) { $str = Rawurldecode ($STR); & Nbsp;preg_match_all ("/(?:%u.{4}). { 4};&#\d+;. +/u ", $str, $r); $ar = $r [0]; foreach ($ar as $k => $v) { if substr ($v, 0,2) = = "%u") { $ar [$k] = Iconv ("UCS-2", "Utf-8//ignore", Pack ("H4", substr ($v,-4)); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} elseif (substr ($v, 0,3) = = "") { $ar [$k] = Iconv ("UCS-2", "Utf-8", Pack ("H4", substr ($v, 3,-1)); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} elseif (substr ($v, 0,2) = = "&#") { echo substr ($v , 2,-1). ""; $ar [$k] = Iconv ("UCS-2", "Utf-8", Pack ("n" , substr ($v, 2,-1)); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} } return Join (" ", $ar);} $x _url= "Http://www.xiami.com/song/playlist/id/". $mp 3_id. " /object_name/default/object_id/0 "; $x _con=file_get_contents ($x _url); Preg_match_all ("/<location>" (. *?) <\/location>/s ", $x _con, $locations); $str = $locations [1][0]; $num =substr ($STR, 0,1); $inp =substr ($STR, 1); $iLe =strlen ($INP)% $num; $a = 0; $ret = '; $arr =array (); For ($i =0 $i < $num $i + +) { $arr [$i] = ($iLe > $i. 1:0) + (strlen ($INP)-$iLe)/$num;} for ($i = 0; $i < $arr [1]; $i + +) { $a =0 for ($j =0; $j < $nUm $j + +) { $ret. = substr ($INP, $a + $i, 1); $a + + $arr [$j]; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP}} $ret _url=unescape ($ret); $url =str_replace (' ^ ', ' 0 ', $ret _url); $url =str_replace (' + ', ', ', $url); $url =preg_replace ('/.mp (. *)/', '. mp3 ', $url); echo $url;