2009-07-13 20 views
12

में नोड्स की संख्या ढूँढना मैं HTML को DOM में लोड कर रहा हूं और फिर PHP में XPath का उपयोग कर क्वेरी कर रहा हूं। मेरी वर्तमान समस्या यह है कि मैं कैसे पता लगा सकता हूं कि कितने मैच किए गए हैं, और एक बार यह पता चला है कि, मैं उन्हें कैसे एक्सेस करूं?PHP, DOM, XPath

मैं इस समय इस गंदे समाधान है:

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

वहाँ एक क्लीनर समाधान नोड्स की संख्या, मैं गिनती() की कोशिश की है खोजने के लिए है, लेकिन यह काम नहीं करता।

उत्तर

27

आपने $nodes से संबंधित कोई भी कोड पोस्ट नहीं किया है, इसलिए मुझे लगता है कि आप DOMXPath और क्वेरी() का उपयोग कर रहे हैं, या कम से कम, आपके पास DOMNodeList है।
DOMXPath :: क्वेरी() एक DOMNodeList देता है, जिसमें एक लंबा सदस्य होता है। आप के माध्यम से उस तक पहुँच सकते हैं (अपने कोड दिया):

$nodes->length 
1

तुम सिर्फ गिनती में जानना चाहते हैं, तो आप भी DOMXPath::evaluate उपयोग कर सकते हैं। पीएचपी मैनुअल से

उदाहरण:

$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";