【问题标题】:simple html dom: how get a tag without certain attribute简单的 html dom:如何获取没有特定属性的标签
【发布时间】:2012-05-17 07:52:27
【问题描述】:

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

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

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

注意:

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

【问题讨论】:

标签: php parsing css-selectors html-parsing simple-html-dom


【解决方案1】:

PHP Simple HTML DOM Parser Manual,在How to find HTML elements?下,我们可以阅读:

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

您的代码将变为:

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

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


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

使用类似于 jQuery 的选择器在 HTML 页面上查找标签。

对于那些因我的原始回答而受到冒犯并对cmets表示不满的人,我深表歉意!

【讨论】:

  • 谢谢,但该运算符不适用于使用简单 HTML DOM 类的 PHP 代码(请参阅我的帖子中的链接)。
  • 是的,我就是这么做的,但我不确定是否有其他解决方案,谢谢,为你 +1
  • 我投了反对票,因为即使你在技术上是正确的,这个问题与 jquery 无关。
  • @KalleH.Väravas 对不起,我已经用文档中的解决方案更新了答案。
  • 效果很好!简单有效。 +1
【解决方案2】:

Simple HTML DOM class 不支持负属性匹配所需的CSS3 pseudo classes

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

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

【讨论】:

  • 我刚刚发布了一个类似的问题,但在我的代码中,我得到了一个没有特定 ID 集的类的所有元素。如果我需要检查 id,您介意显示返回值吗!=some_id 谢谢
  • $nodes = array_filter($html->find('.something'), function($node){return (!empty($node->id) && $node->id != 'some_id');});
  • 谢谢,我看到你建议接受 css3 选择器的 phpquery。这个和简单的 html dom 有性能上的区别吗?
猜你喜欢
  • 1970-01-01
  • 2013-01-05
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多