5

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

我尝试了以下(基于this answer)但没有奏效:

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

笔记:

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

4

2 回答 2

6

来自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 页面上查找标签。

对于那些被我的原始回答冒犯并在评论中表达不满的人,我深表歉意!

于 2012-05-08T19:53:10.903 回答
4

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

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

$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);});
于 2012-10-05T18:58:50.017 回答