计算PHP中第一个子节点中指定标记的数量
要计算包含嵌套标记的指定标记的数量,很简单,如下所示计算PHP中第一个子节点中指定标记的数量,php,html,count,domdocument,Php,Html,Count,Domdocument,要计算包含嵌套标记的指定标记的数量,很简单,如下所示 <?php $html = <<<STR <ul> <li>item1</li> <ul> <li>item2</li> <li>item3</li> <li>item4</li>
<?php
$html = <<<STR
<ul>
<li>item1</li>
<ul>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
</ul>
STR;
$doc = new DOMDocument;
$doc->loadHTML( $html );
$nodeUl->getElementsByTagName('ul')->item(0);
echo $nodeUl->getElementsByTagName('li')->length;
?>
但是如果我想在这种情况下只在第一个子节点中计算li标记,那么如何实现呢?我的意思是在这种情况下,它应该只有一个,而不是四个
也许去掉其他标签,然后数一数?或者有更好的方法吗?尝试以下方法:
$doc = new DOMDocument;
$doc->loadHTML($html);
foreach($doc->getElementsByTagName('ul') as $ul) {
$count = $ul->getElementsByTagName('li')->length;
break;
}
问题在于
getElementsByTagName()
返回所有祖先元素(使用指定的标记名),而不仅仅是子元素
你可以采取几种不同的方法,这里有两种
循环子节点并计算
元素
使用XPath查询(并计数)唯一的子
元素
资源
- 财产
- 财产
- 阶级
- XPath函数
$count = 0;
foreach ($nodeUl->childNodes as $child) {
if ($child->nodeName === 'li') {
$count++;
}
}
$xpath = new DOMXPath($doc);
$count = $xpath->evaluate('count(li)', $nodeUl);