2009-07-13 9 views
12

DOMにHTMLを読み込んだ後、PHPでXPathを使用してクエリを実行しています。私の現在の問題は、どのように多くの試合が行われたかをどのようにして調べるのか、それが確認されると、どのように私はそれらにアクセスするのですか?私は現在、この汚れたソリューションを持ってPHP、DOM、XPathのノード数を調べる

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

は、ノードの数を見つけるクリーナー解決策はあります、私は)(カウントを試してみましたが、それは動作しません。

答えて

27

$nodesに関連するコードを投稿していないので、DOMXPathとquery()を使用していると思われます。または、少なくともDOMNodeListがあります。
DOMXPath :: query()は長さメンバを持つDOMNodeListを返します。あなたは(あなたのコード与えられた)経由でアクセスすることができます。あなただけの数を知りたい場合は、あなたもDOMXPath::evaluateを使用することができます

$nodes->length 
1

。 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"; 
関連する問題