通过PHP CURL检索Soundcloud媒体URL


Retrieving Soundcloud media URL via PHP CURL?

我正在使用Soundcloud API + PHP来提取有关Soundcloud轨道的信息,以便使用jPlayer作为播放列表的mp3播放器。现在,为了播放这首歌曲,除了mp3的实际链接外,我可以完全访问关于这首歌曲的所有信息。

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

现在,如果我尝试cURL,我的结果是一个简单的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',我没有返回任何结果。谁能指出我在如何抓住这个链接的正确方向,这样我就可以生成适当的链接到文件?

提前感谢!

混乱关系

如果您在HTML上使用xpath(顺便说一下,不推荐使用,因为HTML不是XML的子集,除非它是XHTML并且不需要关闭一些标记),它不应该是//HTML/body/a/@href吗?

否则,您可以使用正则表达式提取URL:

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

或者你可以缩小范围,去掉其他部分,但你需要非常小心,因为我怀疑API保证URL将始终是相同的格式(例如子域将始终以media结束)。