查找PHP,DOM,XPath中的节点数

时间:2009-07-13 19:02:08

标签: php dom xpath

我正在将HTML加载到DOM中,然后在PHP中使用XPath查询它。我目前的问题是如何找出已完成的匹配数量,一旦确定,我该如何访问它们?

我目前有这个肮脏的解决方案:

$i = 0;  
foreach($nodes as $node) {  
    echo $dom->savexml($nodes->item($i));  
    $i++;
}

是否有更清晰的解决方案来查找节点数,我尝试过count(),但这不起作用。

2 个答案:

答案 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";