2011-10-12 26 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