![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
相关问题
我刚在学php,做了一个简单的百度mp3歌曲抓取程序,但是传递地址的时候被截断了,想请教下怎么解决。
做这个程序是纯学习,思路是这样的:从新歌100那里截取歌曲列表并替换地址,然后把地址传递到list.php来抓取搜索页的数据,然后在从搜索页传递到播放页面(比如play.php),不知道这样的思路对不对。
两个文件的代码如下:
mp3.php
CODE: <? extract($_GET);extract($_POST); $url = "http://list.mp3.baidu.com/list/newhits.html#top1"; $fp=@fopen($url,"r") or die("链接超时,请刷新!"); $fcontents = file_get_contents($url); preg_match("/<input type=hidden name=refreshtime value=@_newhits_@>([\s\S]*?)<input type=hidden name=refreshtime value=@-RESBODY-@>/",$fcontents,$lists); echo $nurl; $lists = str_replace('<input type=hidden name=refreshtime value=@-RESBODY-@>','</table></body></html>',$lists); $lists = str_replace('<input type=hidden name=refreshtime value=@_newhits_@>','<html><head><title>新歌100</title></head><body>',$lists); $lists = str_replace('<a href="','<a href="list.php?t=list&n=',$lists); echo $lists[0]? $lists[0]:"网站更新中敬请关注"; ?> |
list.php
CODE: <?php if($_GET['t']=="list"){ $purl=($_GET['n']); echo $purl; $lines_array = file($purl); $lines_string = implode('', $lines_array); eregi('<tr class=\"BlueBG\">(.*)<div style=\"padding-left:12px;padding-right:12px;\">',$lines_string,$plist); echo $plist; } ?> |
由于地址被截断,所以往下的程序就没写了。这边的问题出在$purl上,本来应该是mp3搜索的地址,不过遇到了&就被截断,每一个输出来的都是http://mp3.baidu.com/m?tn=baidump3 。请教了高手说是进行urlencode 和urldecode。但是$lists = str_replace('
[ 本帖最后由 52php 于 2006-12-11 02:44 AM 编辑 ]
提问者:52php 08-22 12:12
答复

