2011-10-12 72 views
0

我使用Soundcloud API + PHP来提取有关soundcloud音轨的信息,以便将jPlayer用作播放列表的mp3播放器。现在,我可以完全访问关于该曲目的所有信息,除了与MP3的实际链接以播放曲目。通过PHP CURL检索Soundcloud媒体网址?

根据API,如果曲目允许流式传输,您只需要卷曲流式URL(即:http://api.soundcloud.com/tracks/24887826/stream?client_id=xxx)。

现在,如果我尝试卷曲,我的结果是一个简单的HTML位<html><body>You are being <a href="http://ak-media.soundcloud.com/sjkn57c6gAA5.128.mp3?AWSAccessKeyId=AKIAJBHW5FB4ERKUQUOQ&amp;Expires=1318411541&amp;Signature=yaX7Noe%2F8c5dFF0H%2BGfhZ%2FX0130%3D&amp;__gda__=1318411541_6ed9d2af39e51b5f1e94e659eff0495d">redirected</a>.</body></html>

我想要的链接是整个media.soundcloud.com/sjkn57c6gAA5就是这样。但是,如果我尝试xpath '//a/@href'我没有得到任何结果返回。任何人都可以指出我如何抓住这个链接的正确方向,以便我可以生成相应的文件链接?

提前致谢!

回答

0

如果您使用的HTML的XPath(不推荐的方式,因为HTML不是XML的一个子集,除非它是XHTML,并不需要一些标签被关闭),不应该它是// html/body/a/@ href?

否则,你可以使用正则表达式来提取网址:

if(preg_match('/href="(.*?)"/', $m)) { 
    $url = $m[1]; 
} 

或者你可以缩小它剥夺了其他地方,但你必须非常小心,因为我怀疑API保证URL将始终具有相同的格式(例如,子域始终以媒体结尾)。

+0

你会推荐什么解析HTML呢?我一直在使用XPath,直到现在还没有遇到问题。只是正则表达式? – tr3online

+0

http://stackoverflow.com/questions/3650125/how-to-parse-html-with-php :) – Dave