2013-03-17 47 views
0

當閱讀RSS提要時,我嘗試從文本中分離圖像和視頻的鏈接。 這裏是一個RSS饋送http://stopgame.ru/rss/rss_news.xml與文本的單獨鏈接

有一些文本,其具有與YouTube鏈接描述,例如,它與
<br><br>http://www.youtube.com/...

或一些端部具有與圖像

<br><a href="link"></a><br> 
<br><a href="link"></a><br> 

結束,部分視頻和圖像

<br><br>http://www.youtube.com/...<br> 
<br><a href="link"></a><br> 
<br><a href="link"></a><br> 

我需要分離所有圖像鏈接到AR ray $images和視頻鏈接到陣列$video。 現在PHP是這樣的代碼:

if (preg_match_all("/\<br\>\<a href=\"http:\/\/images.stopgame.ru\/(.*)\"\>\<\/a\>\<br\>/", $item->description, $images)) { 
     $item->description = preg_replace("/\<br\>\<a href=\"http:\/\/images.stopgame.ru\/(.*)\"\>\<\/a\>\<br\>/", "", $item->description); 
    } else { 
     $images = null; 
    } 

    if (preg_match_all("/http:\/\/www.youtube.com\/(.*)\<\/p\>/", $item->description, $video)) { 
     $item->description = preg_replace("/\<br\>\<br\>http:\/\/www.youtube.com\/(.*)\<\/p\>/", "", $item->description); 
    } else { 
     $video = null; 
    } 


但它表現出不太好的結果:
的var_dump($視頻)返回類似這樣:

array(2) { [0]=> array(1) { [0]=> string(46) "http://www.youtube.com/watch?v=ZJc2W8SBE5U 

" } [1]=> array(1) { [0]=> string(19) "watch?v=ZJc2W8SBE5U" } } 

的var_dump($圖像)返回像這樣:

array(2) { [0]=> array(1) { [0]=> string(237) " 





" } [1]=> array(1) { [0]=> string(188) "news/2013/03/15/1363362690.jpg"> 
+0

你是想用正則表達式解析HTML? ;-) – MattDiamant 2013-03-17 19:04:18

+1

有沒有理由不能使用[DomDocument](http://php.net/manual/en/class.domdocument.php)? – juco 2013-03-17 19:04:46

回答

1

使用simplexml:
不幸的是,您沒有發佈xml文件的方式讓我瞭解它的結構,所以我不知道如何判斷鏈接是指圖像還是視頻。
除非您發佈的XML的一些啓發性的片段,我給一個通用的解決方案來提取-nodes所有的href的屬性:

$xml = simplexml_load_file('yourfile.xml'); 

$urls = $xml->xpath("//a/@href"); 

foreach ($urls as $url) { 

    echo $url; 
} 
+0

我已發佈rss'http:// stopgame.ru/rss/rss_news.xml' – user2058653 2013-03-17 19:35:44

+0

不,您發佈了一個鏈接。 – michi 2013-03-17 22:06:45