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


simple html dom: how get a tag without certain attribute

我想获取"class"属性等于"someclass"的标签,但只获取那些尚未定义属性"id"的标签。

我尝试了以下方法(基于此答案),但没有奏效:

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

注意:

我正在使用简单的HTML DOM类,在他们提供的基本文档中,我没有找到我需要的东西。

从 PHP Simple HTML DOM Parser 手册中,在 如何查找 HTML 元素?下,我们可以阅读:

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

您的代码将变为:

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

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


我最初的答案是基于元素的选择,就像我们使用jQuery一样,因为Simple HTML DOM解析器声称在我们可以阅读的主页上支持它们:

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

向那些被我原来的回答冒犯并在评论中表达不满的人表示诚挚的歉意!

Simple HTML DOM 类不支持负属性匹配所需的 CSS3 伪类。

绕过限制很简单,没有太多麻烦。

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