2011-11-05 194 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

相关问题