Поиск количества узлов в PHP, DOM, XPath

Я загружаю HTML в DOM, а затем запрашиваю его с помощью XPath в PHP. Моя текущая проблема заключается в том, как узнать, сколько совпадений было сделано, и как только это будет установлено, как мне получить к ним доступ?

В настоящее время у меня есть это грязное решение:

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

Есть ли более чистое решение для поиска количества узлов, я попробовал count (), но это не работает.

Вы не указали какой-либо код, связанный с $nodes поэтому я предполагаю, что вы используете DOMXPath и query (), или, по крайней мере, у вас есть DOMNodeList .
DOMXPath :: query () возвращает DOMNodeList, который имеет член длины. Вы можете получить доступ к нему через (с учетом вашего кода):

 $nodes->length 

Если вы просто хотите узнать счет, вы также можете использовать 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";