【问题标题】:How do I find the last <div class> in an HTML File with PHP Simple HTML DOM Parser?如何使用 PHP Simple HTML DOM Parser 在 HTML 文件中找到最后一个 <div class>?
【发布时间】:2011-06-15 01:35:16
【问题描述】:

根据SIMPLE HTML DOM PARSER 的文档(在“如何修改HTML 元素”选项卡下),此代码找到&lt;div class="hello"&gt; 的第一个实例:

$html = str_get_html('<div class="hello">Hello</div><div class="world">World</div>');

$html->find('div[class=hello]', 0)->innertext = 'foo';

echo $html; // Output: <div class="hello">foo</div><div class="world">World</div>

如果我想在&lt;div class="hello"&gt;last 实例中插入'foo',假设HTML 代码有很多&lt;div class="hello"&gt; 的实例。

应该用什么替换0

【问题讨论】:

  • 您已经提出了 18 个问题并接受了其中仅 7 个问题的答案。改进此统计数据将导致人们更有兴趣帮助您!

标签: php html parsing dom


【解决方案1】:

好吧,因为

// Find all anchors, returns a array of element objects
$ret = $html->find('whatever');

返回一个包含所有&lt;whatever&gt; 元素的array,您可以使用PHP 的常规数组函数获取最后一个元素,例如end

$last = end($ret);

如果 SimpleHtmlDom 完全实现 CSS3 Selectors 进行查询,您也可以修改您的查询以使用

:last-of-type

只查找返回的节点列表中的最后一个兄弟节点。

【讨论】:

    【解决方案2】:

    来自手册:

    // Find lastest anchor, returns element object or null if not found (zero based)
    $ret = $html->find('a', -1); 
    

    【讨论】:

      【解决方案3】:

      lastChild 属性返回元素的最后一个子对象。

      编辑: 显然不是 JQuery :) 请参阅 W3C 选择器参考:http://www.w3.org/TR/css3-selectors/#last-child-pseudo

      【讨论】:

      • 这不是 JQuery 选择器。这只是选择器。这是 W3C 规范。
      • 嗯,DOM 中还有一个 lastChild 属性,所以无论如何它都是可选的。请参阅此处:w3schools.com/jsref/dom_obj_all.asp 不要明白 -1 的用途。
      • @crowicked:可能是因为忽略了标签和指向 exactly OP 正在使用的链接,然后出于某种原因假设为 jQuery。 lastChild 是一个很好的呼喊。
      • 我没有 dv,但如果您想链接到正确的规格,请使用 w3.org/TR/css3-selectors。 w3schools 以贫乏且往往是虚假的材料而闻名。此外,w3schools 不隶属于 w3c。
      • 就像我说的,我没有 dv,但作为一般提示:如果您知道您的答案有问题,请纠正它。这让人们有机会再次举起 dv。不能保证他们会这样做,但它会增加你的机会。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2013-09-05
      • 2016-04-09
      • 1970-01-01
      相关资源
      最近更新 更多