>我用DomDoc检索网站的内容,并使用XPath查询某些元素。例如,我查询<p>
元素 - 通过在循环$paragraphs = $dom->query('//p')->item(i);
中执行类似操作,然后继续在循环内操作<p>
。现在,有没有办法找出<p>
内可能有什么样的其他HTML元素,以及段落元素中有多少其他元素?
我看过这个例子:PHP文档
但这似乎只有在您对子元素有所了解时才有效? 如果我不知道<p></p>
的"内容",如何获取计数和元素名称。
谢谢!
好吧,在你拥有的任何 DOM 元素上,您可以使用getElementsByTagName('*')
来查找所有后代元素,或者您可以使用相对于元素的 XPath 来查找具有路径*
的所有子元素或使用 XPath 表达式count(*)
对它们进行计数,或者您可以分别使用 .//*
对所有后代元素执行相同的操作count(.//*)
。
因此,给定$element = $dom->query('//p')->item(i);
您可以使用$element->getElementsByTagName('*')->length
作为 DOM 方法来查找所有后代,或者$dom->query('.//*', $element)
作为 XPath 方式。对于子元素,请使用 $dom->query('*', $element)
。