simple_html_dom查找仅包含特定文本的所有元素


simple_html_dom find all elements that ONLY contain certain text

我有:

 <span>something or other</span>
 <b>blarg</b>
 <b>blarg and stuff</b>
 <span>blarg</span>
 <em>wakka wakka</em>
 <em>wakka blarg</em>
 <em>blarg</em>

我只想得到只包含"blarg"而不包含其他文本的元素,所以:

 <b>blarg</b>
 <span>blarg</span>
 <em>blarg</em> 

这里的重要问题是,我试图检查blarg是否单独存在于页面上的一个元素中。我在regex方面有一些运气,但我更愿意使用simple_html_dom,这样我也可以查看子元素和兄弟元素。

有人知道用simple_html_dom做这件事最简单的方法是什么吗?

一种方法是解析每个标记,并测试它是否包含"blarg"。。。

下面是一个工作示例:

$text = '<span>something or other</span>
 <b>blarg</b>
 <b>blarg and stuff</b>
 <span>blarg</span>
 <em>wakka wakka</em>
 <em>wakka blarg</em>
 <em>blarg</em>';
echo  "<div>Original Text: <xmp>$text</xmp></div>";
$html = str_get_html($text);
// Find all elements
$tags = $html->find('*');
foreach ($tags as $key => $tag) {
    // If text in tag contains 'blarg'
    if (strcmp(trim($tag->plaintext),'blarg') == 0) {
        echo  "<div> 'blarg' found in '$tags[$key]: <xmp>".$tag->outertext."</xmp></div>";
    }
}

我不知道你想用什么,但这可能是一个开始:)