我使用DomDoc检索网站的内容并使用XPath查询某些元素。例如,我查询<p>
元素 - 在循环$paragraphs = $dom->query('//p')->item(i);
中执行类似的操作,然后继续操作循环内的<p>
。现在,有没有办法找出<p>
中可能包含哪些其他HTML元素以及段落元素中有多少其他元素?
我见过这个例子:PHP Documentation
但是,如果您对儿童元素有所了解,这似乎才有效?如果我不知道<p></p>
的“内容”,我怎样才能得到计数和元素名称。
谢谢!
答案 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)
。