使用PHP中的SimpleHTMLDomParser将html注释元素作为字符串获取

时间:2015-02-18 22:07:41

标签: php html-parsing

从官方手册中我知道我可以使用以下代码获得所有评论:

 // Find all comment (<!--...-->) blocks 
$es = $html->find('comment');

但是这会创建一个注释节点数组。我想将评论的内容作为字符串。我怎么能这样做?

我尝试使用$ es-&gt;纯文本,$ es-&gt; innertext和$ es-&gt; outertext。

这是我想要的一个例子:

HTML:

...
<div id='a'>
<!-- Some text -->
</div>
...

PHP:

...
$content = $html->find('div[id=a]', 0)->find('comment', 0)->some_attr;
echo 'Content:'.$content;

浏览器:

Content: Some text

提前致谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!

当我们使用SimpleHTMLDom加载html时,注释(脚本和其他内容)将从文档中删除并保存在名为“noise”的数组中。

我们可以在整个噪音列表中找到一个注释/脚本/等搜索字符串模式,并且有一个函数可以做到这一点。

这是解决方案:

$html->search_noise($subString);

因此,在我自己的例子中,解决方案可以是:

1.- $comment = $html->search_noise('Some');
2.- $comment = $html->search_noise('text');
3.- $comment = $html->search_noise('me te');
4.- etc etc

search_noise函数返回与模式匹配的第一个噪声,因此,我们必须对所选的子字符串稍微小心。