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

let*_*cia 5 php parsing css-selectors html-parsing simple-html-dom

我想得到"class"属性等于"someclass"的标签,但只有那些没有定义属性"id"的标签.

我尝试了以下(根据这个答案),但没有奏效:

$html->find('.someclass[id!=*]');
Run Code Online (Sandbox Code Playgroud)

注意:

我正在使用Simple HTML DOM类,在他们提供的基本文档中,我找不到我需要的东西.

Zuu*_*uul 5

PHP Simple HTML DOM Parser Manual,如何查找HTML元素?,我们可以读到:

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

您的代码将变为:

$html->find('.someclass[!id]');
Run Code Online (Sandbox Code Playgroud)

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


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

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

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


h0t*_*1r3 4

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

解决这个限制很简单,没有太多麻烦。

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