前面在讲到:wordpress添加mp3播放器有朋友问虾米mp3怎么po,jie,以下即是php的po,jie程序:
<?php
//author:wordpress教程网(shouce.ren)
header("Content-type: text/html; charset=utf-8");
date_default_timezone_set('Asia/Shanghai');
error_reporting(0);
//http://www.xiami.com/song/play?ids=/song/playlist/id/1769771075/object_name/default/object_id/0
function parse_xml($play_url)
{
$play_url_attr = str_replace('http://www.xiami.com/song/play?ids=' , '' , $play_url);
$play_url_arr = explode('/', $play_url_attr);
$id = $play_url_arr[4];
$url = 'http://www.xiami.com/widget/xml-single/uid/0/sid/' . $id;
$xmlString = file_get_contents($url);
$xml = new DOMDocument();
$xml->loadXML($xmlString);
$mp3_url = $xml->getElementsByTagName("location");
$mp3_url = $mp3_url->item(0)->nodeValue;
$mp3_url = xiami_decode($mp3_url);
return $mp3_url;
}
function xiami_decode($str = ''){
// $str = '9hFaF76%6t%m17%59t2i162E%pF.6%545%fn4222E31e%F%3.A.t2%5_m%x%F5E7p2i25E743';
$totle = (int)$str;
$newString = substr($str, 1);
$chu = floor(strlen($newString) / $totle);
$yu = strlen($newString) % $totle;
$stor = array();
$i = 0;
for($i=0; $i<$yu; $i++){
$stor[$i] = substr($newString, ($chu + 1) * $i, $chu + 1);
}
for($i=$yu; $i<$totle; $i++){
$stor[$i] = substr($newString, $chu * ($i - $yu) + ($chu + 1) * $yu, $chu);
}
$pinString = '';
for($i=0; $i<strlen($stor[0]); $i++){
for($j=0; $j<count($stor); $j++){
$pinString .= substr($stor[$j], $i, 1);
}
}
$pinString = rawurldecode($pinString);
$returnString = '';
for($i=0; $i<strlen($pinString); $i++){
if(substr($pinString, $i, 1) == '^'){
$returnString .= '0';
}else{
$returnString .= substr($pinString, $i, 1);
}
}
return $returnString;
}
$play_url = 'http://www.xiami.com/song/play?ids=/song/playlist/id/1771291147/object_name/default/object_id/0';
$mp3_url = parse_xml($play_url);
echo $mp3_url;
?>