Php 如何获得DOM节点相对于元素的深度?
如何获得DOM节点相对于HTML元素的深度?(这是作为子项的HTML标记,而不是文本节点) 例如:Php 如何获得DOM节点相对于元素的深度?,php,dom,Php,Dom,如何获得DOM节点相对于HTML元素的深度?(这是作为子项的HTML标记,而不是文本节点) 例如: <div> // root node here is my text node // but it wont be considered in level increment <p> // level 1 <label> // level 2 here is another text node <
<div> // root node
here is my text node // but it wont be considered in level increment
<p> // level 1
<label> // level 2
here is another text node
</label>
</p>
</div>
把树往上走。这样做应该可以(未经测试): 我建议:
function findNodeLevel($node) { // $node is a DOMNode
$xpath = explode('/', $node->getNodePath());
return count($xpath);
}
你能告诉我如何到达任何节点的叶子,从而进一步扩展你的答案吗?你是什么意思?此函数通过将祖先树遍历回根,返回传递给它的节点的深度。不涉及叶子。它将如何处理元素?仅当子元素类型为3时,表示增加深度?您可能指的是元素类型1。此函数不必检查元素类型,因为父节点只能是元素节点。是的,我指的是类型1。我已经测试了您的函数,但在本例中它返回3,而在本例中它应该返回2:h2标记-段文本的内容结尾这里是一个粗体标记
function getDepth($node)
{
$depth = -1;
// Increase depth until we reach the root (root has depth 0)
while ($node != null)
{
$depth++;
// Move to parent node
$node = $node->parentNode;
}
return $depth;
}
function findNodeLevel($node) { // $node is a DOMNode
$xpath = explode('/', $node->getNodePath());
return count($xpath);
}