0

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

根据 API,如果轨道允许流式传输,您只需 cURL 流式 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'不会返回任何结果。谁能指出我如何获取此链接的正确方向,以便我可以生成文件的适当链接?

提前谢谢!

特雷

4

1 回答 1

0

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

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

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

或者您可以缩小范围以去除其他部分,但您需要非常小心,因为我怀疑 API 是否保证 URL 将始终具有相同的格式(例如,子域将始终以媒体结尾)。

于 2011-10-12T09:41:54.430 回答