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

时间:2016-01-24 17:22:49

标签: php xpath domdocument

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

我见过这个例子:PHP Documentation

但是,如果您对儿童元素有所了解,这似乎才有效?如果我不知道<p></p>的“内容”,我怎样才能得到计数和元素名称。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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