如何使用 PHP Simple HTML DOM Parser 在 HTML 文件中找到最后一个 <div class>?

Posted

技术标签:

【中文标题】如何使用 PHP Simple HTML DOM Parser 在 HTML 文件中找到最后一个 <div class>?【英文标题】:How do I find the last <div class> in an HTML File with PHP Simple HTML DOM Parser? 【发布时间】: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 个问题的答案。改进此统计数据将导致人们更有兴趣帮助您! 【参考方案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。不能保证他们会这样做,但它会增加你的机会。

以上是关于如何使用 PHP Simple HTML DOM Parser 在 HTML 文件中找到最后一个 <div class>?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP Simple HTML DOM Parser 在 HTML 文件中找到最后一个 <div class>?

从 Simple Html Dom 中排除不需要的 html - PHP

php解析html类库simple_html_dom

使用 PHP Simple HTML DOM Parser 查找和删除 html 标签

使用 PHP 和 Simple HTML DOM 解析 HTML 时遇到问题

使用php simple html dom parser解析html标签