2010-08-18 45 views
0

我剛剛在我的最新項目中遇到了一些有關PHP的問題。基本上我有一塊文字($text),我想搜索該文本並返回所有的MP3鏈接。我知道它與正則表達式有關,但我無法正常工作。搜索文本塊,使用PHP返回MP3鏈接

這裏是我當前的代碼:

if(preg_match_all(".mp3", $text, $matches, PREG_SET_ORDER)) { 

    foreach($matches as $match) { 
    echo $match[2]; 
    echo $text; 
     } 
    } 

回答

2

再次,正則表達式是在解析HTML極差。使用適當的HTML解析器來抓取網頁中的信息。

例如,使用DOMDocument::loadHTML()解析HTML內容,然後使用getElementsByTagName('a')獲取頁面中的鏈接列表。爲每個鏈接,getAttribute('href')看看它在哪裏指向。

但是,請注意,絕對不能保證MP3文件將始終只存儲在以.mp3結尾的文件名下。在Web上,資源的類型不一定來自文件擴展名。確定URL指向什麼類型的文件的唯一方法是繼續前進並獲取它(使用HTTP GET或HEAD請求)。

+0

非常感謝您的回覆。唯一的問題是我試圖從字符串中提取鏈接,而不是網頁 - 我仍然可以使用HTML解析器嗎? – Shola 2010-08-19 01:31:30

+0

是的,這就是'loadHTML()'所做的。它並不關心字符串是否從網絡中獲取。 – bobince 2010-08-19 08:13:08