PHP DomDoc 和 XPath 获取未知子元素的数量

PHP DomDoc & XPath get number of unknown child elements

我使用 DomDoc 检索网站内容并使用 XPath 查询某些元素。例如,我查询 <p> 元素 - 通过在循环 $paragraphs = $dom->query('//p')->item(i); 内执行类似的操作,然后继续在循环内操作 <p> 。现在,有没有办法找出 <p> 中可能还有哪些其他 HTML 元素以及段落元素中有多少其他元素?

我看过这个例子:PHP Documentation

但这似乎只有在您对子元素有所了解的情况下才有效?如果我不知道 <p></p> 的 "contents",我该如何获取计数和元素名称。

谢谢!

好吧,在您拥有的任何 DOM 元素上,您可以使用 getElementsByTagName('*') 来查找所有后代元素,或者您可以使用相对于该元素的 XPath 来查找路径为 [=11 的所有子元素=] 或使用 XPath 表达式 count(*) 对它们进行计数,或者您可以分别使用 .//* count(.//*) 对所有后代元素执行相同的操作。

因此给定 $element = $dom->query('//p')->item(i); 您可以使用 $element->getElementsByTagName('*')->length 作为 DOM 方式来查找所有后代,或者使用 $dom->query('.//*', $element) 作为 XPath 方式。对于子元素使用 $dom->query('*', $element).