我正在将HTML加载到DOM中,然后在PHP中使用XPath查询它。我目前的问题是如何找出已完成的匹配数量,一旦确定,我该如何访问它们?
我目前有这个肮脏的解决方案:
$i = 0;
foreach($nodes as $node) {
echo $dom->savexml($nodes->item($i));
$i++;
}
是否有更清晰的解决方案来查找节点数,我尝试过count(),但这不起作用。
答案 0 :(得分:28)
您尚未发布与$nodes
相关的任何代码,因此我假设您使用的是DOMXPath和query(),或者至少有DOMNodeList。
DOMXPath :: query()返回一个DOMNodeList,它有一个length成员。您可以通过(给定您的代码)访问它:
$nodes->length
答案 1 :(得分:1)
如果您只想知道计数,还可以使用DOMXPath::evaluate
。
PHP手册中的示例:
$doc = new DOMDocument;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// our query is relative to the tbody node
$query = 'count(row/entry[. = "en"])';
$entries = $xpath->evaluate($query, $tbody);
echo "There are $entries english books\n";