可能的重复:
使用 PHP 解析 HTML 的最佳方法 https://stackoverflow.com/questions/3577641/best-methods-to-parse-html-with-php
对于一个项目,我需要获取一个 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 中做到这一点?
有没有办法在 php 中做到这一点?
是的,您可以先剥离所有您不感兴趣的标签,然后使用DOMDocument http://php.net/DOMDocument删除所有不需要的属性。最后需要重新运行strip_tags http://php.net/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 http://codepad.viper-7.com/1Ro4z1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)