简单的html dom:如何获得没有特定属性的标签

时间:2012-05-08 19:33:34

标签: php parsing css-selectors html-parsing simple-html-dom

我想获得“class”属性等于“someclass”的标签,但只有那些未定义属性“id”的标签。

我尝试了以下内容(基于此答案),但没有效果:

$html->find('.someclass[id!=*]');

注意:

我正在使用Simple HTML DOM class,在他们提供的基本文档中,我找不到我需要的内容。

2 个答案:

答案 0 :(得分:5)

PHP Simple HTML DOM Parser Manual下的How to find HTML elements?,我们可以阅读:

  

[!attribute]匹配没有指定属性的元素。

您的代码将变为:

$html->find('.someclass[!id]');

这会将元素与没有someClass属性的类id匹配。


我的原始答案基于元素的选择,就像我们使用jQuery一样,因为Simple HTML DOM Parser声称支持它们main page,我们可以阅读:

  

使用选择器在HTML页面上查找标签,就像jQuery一样。

我真诚地向那些因我的原始答案而被冒犯并对评论表示不满的人致歉!

答案 1 :(得分:3)

Simple HTML DOM class不支持负面属性匹配所需的CSS3 pseudo classes

在没有太多麻烦的情况下解决限制很简单。

$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);});