Php 简单HTMLDOM:如何获取没有特定属性的标记

Php 简单HTMLDOM:如何获取没有特定属性的标记,php,parsing,css-selectors,html-parsing,simple-html-dom,Php,Parsing,Css Selectors,Html Parsing,Simple Html Dom,我想得到“class”属性等于“someclass”的标签,但只得到那些没有定义属性“id”的标签 我尝试了以下方法(基于此答案),但没有成功: $html->find('.someclass[id!=*]'); 注意: $html->find('.someclass[!id]'); 我正在使用,在他们提供的基本文档中,我没有找到我需要的内容。从中,在下面,我们可以阅读: [!attribute]匹配没有指定属性的元素 您的代码将变成: $html->find('.some

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

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

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

$html->find('.someclass[!id]');
我正在使用,在他们提供的基本文档中,我没有找到我需要的内容。

从中,在下面,我们可以阅读:

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

您的代码将变成:

$html->find('.someclass[!id]');
这将使元素与没有
id
属性的class
someClass
匹配


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

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

我真诚地向那些被我最初的回答冒犯并在评论中表达不满的人道歉

不支持负属性匹配所需的属性

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

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

谢谢,但该操作符不适用于使用简单HTML DOM类的PHP代码(请参阅我文章中的链接)。是的,我就是这么做的,但我不确定是否还有其他解决方案,谢谢,+1代表你。我投了反对票,因为尽管你在技术上是正确的,但这个问题与jquery无关。@KalleH.Väravas对此表示抱歉,我已经用文档中的解决方案更新了答案。效果很好!简单有效+1对于CSS3选择器,请尝试我刚刚发布了一个类似的问题,但在我的代码中,我得到了一个类的所有元素,该类没有特定的ID集。如果我需要检查身份证,你能告诉我退货是多少吗=some_-id感谢
$nodes=array_过滤器($html->find('.something')、函数($node){return(!empty($node->id)&&$node->id!='some_-id');})谢谢,我看到你建议的phpquery接受css3选择器。这个和简单的HTMLDOM之间有什么性能差异吗?