我想获得“class”属性等于“someclass”的标签,但只有那些没有定义属性“id”的标签。
我尝试了以下(基于this answer)但没有奏效:
$html->find('.someclass[id!=*]');
笔记:
我正在使用简单的 HTML DOM 类,在他们提供的基本文档中,我没有找到我需要的东西。
我想获得“class”属性等于“someclass”的标签,但只有那些没有定义属性“id”的标签。
我尝试了以下(基于this answer)但没有奏效:
$html->find('.someclass[id!=*]');
笔记:
我正在使用简单的 HTML DOM 类,在他们提供的基本文档中,我没有找到我需要的东西。
来自PHP Simple HTML DOM Parser Manual,在How to find HTML elements?,我们可以阅读:
[!attribute] 匹配没有指定属性的元素。
您的代码将变为:
$html->find('.someclass[!id]');
这将匹配具有someClass
没有id
属性的类的元素。
我最初的答案是基于元素的选择,就像我们使用 jQuery 一样,因为 Simple HTML DOM Parser 声称在我们可以阅读的主页上支持它们:
使用像 jQuery 一样的选择器在 HTML 页面上查找标签。
对于那些被我的原始回答冒犯并在评论中表达不满的人,我深表歉意!
简单的 HTML DOM 类不支持负属性匹配所需的CSS3 伪类。
解决这个限制很简单,没有太多麻烦。
$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);});