2011-11-05 192 views
-1

可能重複:
Best methods to parse HTML with PHP從PHP中提取HTML中的所有文本和img標籤。

對於一個項目,我需要採取一個HTML頁面,並從中提取它的所有文字和IMG標籤,並保存在它們出現的順序相同在網頁中。

因此,舉例來說,如果網頁是:

<p>Hi</p> 
<a href ="test.com" alt="a link"> text link</a> 
<img src="test.png" /> 
<a href ="test.com"><img src="test2.png" /></a> 

我想檢索與此格式的信息:

text - Hi 
Link1 - <a href ="test.com">text link</a> notice without alt or other tag 
Img1 - test.png 
Link2 - <a href ="test.com"><img src="test2.png" /></a> again no tag 

有沒有一種方法,使在PHP?

+1

你嘗試過這麼遠嗎?爲了讓您開始,請查看使用PHP的HTML解析器。 – Blender

+0

查看相關鏈接,甚至搜索。 – mario

+0

請參閱這裏:http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php –

回答

-1

我會用HTML Parser將信息拉出網站。閱讀。

1

有沒有辦法讓這在PHP?

是的,您可以先剝去您不感興趣的所有標籤,然後使用DOMDocument刪除所有不需要的屬性。最後,您需要重新運行strip_tags以消除DomDocument添加標籤:

$allowed_tags = '<a><img>'; 
$allowed_attributes = array('href', 'src'); 

$html = strip_tags($html, $allowed_tags); 
$dom = new DOMDocument(); 

$dom->loadHTML($html); 

foreach($dom->getElementsByTagName('*') as $node) 
{ 
    foreach($node->attributes as $attribute) 
    { 
     if (in_array($attribute->name, $allowed_attributes)) continue; 
     $node->removeAttributeNode($attribute); 
    } 
} 

$html = $dom->saveHTML($dom->getElementsByTagname('body')->item(0)); 
$html = strip_tags($html, $allowed_tags); 

Demo

相關問題