求PHP&JSON大神帮忙

@Ta 2016-07-06 15040点击
i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=关键词&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887&jsonpCallback=jsonp5

求大神帮忙写个实例,抓取上面这个接口返回的一些数据,逐条列出,大神求帮忙,搞了几天,硬是解析不出来。
回复列表(22|隐藏机器人聊天)
  • @Ta / 2016-07-06 / /
    如果用php,思路是把 jsonp5(和末尾的)截去,然后json_decode()转成数组,然后输出。用js的话定义一个jsonp5(){}函数解析json就好了。

    歌手名:[data][song][list][0~20][singer][name]

    歌曲id:[data][song][list][0~20][songid]

    几种比特率/格式的歌曲大小[data][song][list][0~20][格式](格式可以是[size128]、[size320]、[sizeape]、[sizeflac]、[sizeogg])

    播放链接:[data][song][list][0~20][songurl]

    目测是MV的id:[data][song][list][0~20][vid]

    for 0到20就可以全部列出了
  • @Ta / 2016-07-06 / /
    @hnhhcxy,默默问下 这是做什么的?
  • @Ta / 2016-07-06 / /
    @懒人,QQ音乐搜索接口
  • @Ta / 2016-07-07 / /
    @cnhong,能给个实例吗?
  • @Ta / 2016-07-07 / /
    @hnhhcxy,2楼就可以啊
  • @Ta / 2016-07-07 / /
    @cnhong,能按你的方法给个获取歌曲ID的实例吗,我学习学习,我还是不太懂,大神
  • @Ta / 2016-07-07 / /
    <?php
    $url = 'http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=林俊杰&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887&jsonpCallback=jsonp5';
    
    $data = file_get_contents($url);
    $data = substr($data,7,-1);
    $data = json_decode($data,true);
    //print_r($data);
    $nr='result:<hr>';
    for($i=0;$i<20;$i++){
    	$songname=$data[data][song]['list'][$i][songname];
    	$n=$i+1;
    	$id=$data[data][song]['list'][$i][songid];
    	$url=$data[data][song]['list'][$i][songurl]?$data[data][song]['list'][$i][songurl]:'无';
    	
    	$nr.=$n.'、歌曲名:'.$songname;
    	$nr.='(id:'.$id.')<br>';
    	$nr.='网址:'.$url.'<hr>';
    }
    echo $nr;
    
    ?>
    
  • @Ta / 2016-07-07 / /
    @cnhong,感谢,早点睡了,不早了,明天研究研究。
  • @Ta / 2016-07-07 / /
    把format换成json就能直接搞了🙄
    jsonp是给js跨域的🙄
    <?php
    $url='http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=关键词&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887';
    $result=json_decode(file_get_contents($url));
    echo '<pre>';
    var_dump($result);
    echo '</pre>';
    
  • @Ta / 2016-07-07 / /
    @hnhhcxy
    <?php
    header("Content-type: text/html; charset=utf-8"); 
    error_reporting(0);
    $key="周杰伦";
    $a=json_decode(file_get_contents("http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?format=json&w=".$key."&n=50"),true);
    for($i=0;$i<=$a['data']['song']['curnum']-1;$i++){
    	echo '<a href="'.$a['data']['song']['list'][$i]['songurl'].'">'.$a['data']['song']['list'][$i]['songname'].'</a><br>';
    }
    ?>
  • @Ta / 2016-07-07 / /
    @小男生,歌手名的那个怎么获取呢?
  • @Ta / 2016-07-07 / /
    @小男生

    '.$a['data']['song']['list'][$i]['singer'][$i]['name'].'

    用这句获取歌手名的话,只有第一个才能显示歌手名,求解
  • @Ta / 2016-07-07 / /
    @cnhong,歌手名获取不成功
  • @Ta / 2016-07-07 / /
    '.$a['data']['song']['list'][$i]['singer']['name'].'
  • @Ta / 2016-07-07 / /
    @cnhong,这个获取不到,
    '.$a['data']['song']['list'][$i]['singer'][$i]['name'].'
    这个的话只能获取到第一个,后面的就获取不到
  • @Ta / 2016-07-07 / /
    @hnhhcxy,我现在没在电脑前
  • @Ta / 2016-07-07 / /
    @cnhong,感谢了,如果可以的话,有空的时候帮下忙。
  • @Ta / 2016-07-07 / /
    ...
添加新回复
回复需要登录