2016-06-02 17 views
1

ich den Code folgenden HTML haben:PHP XPath-Abfrage nicht funktioniert

<html><body><h1> <span class="mw-headline" id="Discussie_over_Titel">Discussie over Titel</span></h1> 
 
<div class="comments"> 
 
<div class="comment new"> 
 
<div class="newcommenttext">Klik op de button om een nieuwe opmerking te maken over <a href="/index.php/Titel" title="Titel">Titel</a></div><div class="buttons"><a href="/index.php/Speciaal:GegevensBewerken/Comment?Comment%5BWS-Comment-page%5D=Titel&amp;NewComment=Yes" title="" target="_self">Nieuwe opmerking</a></div> 
 
<div class="clear"></div> 
 
</div> 
 
<div class="comments"><div> 
 
</div><div class="commentBlock"><div class="comment" id="WikiSysop-"><div class="poster">Door <span class="usernamehighlight">WikiSysop</span> op <span class="extradata">Type: Suggestie</span> 
 
</div> 
 
<div class="buttons"><a href="/index.php/Speciaal:GegevensBewerken/Comment?Comment%5BWS-Comment-page%5D=Discussie%3A%28door%20WikiSysop%20op%20%29&amp;NewComment=Yes" title="" target="_self">Reageer op deze opmerking</a><span class="collapse"><a href="/index.php?title=Collapse&amp;action=edit&amp;redlink=1" class="new" title="Collapse (de pagina bestaat niet)">Collapse</a></span></div><div class="content">Wat is dit nou weer? 
 
</div> 
 
</div> 
 
</div><div class="commentBlock"><div class="comment" id="WikiSysop-"><div class="poster">Door <span class="usernamehighlight">WikiSysop</span> op <span class="extradata">Type: Suggestie</span> 
 
</div> 
 
<div class="buttons"><a href="/index.php/Speciaal:GegevensBewerken/Comment?Comment%5BWS-Comment-page%5D=Discussie%3A%28door%20WikiSysop%20op%20Stiekem%29&amp;NewComment=Yes" title="" target="_self">Reageer op deze opmerking</a><span class="collapse"><a href="/index.php?title=Collapse&amp;action=edit&amp;redlink=1" class="new" title="Collapse (de pagina bestaat niet)">Collapse</a></span></div><div class="content">Mega mooi! 
 
</div> 
 
</div></div></div></div> <div class="comments"> 
 
<div class="comment new"><div class="newcommenttext"> 
 
Klik op de button om een nieuwe opmerking te maken over <a href="/index.php/Titel" title="Titel">Titel</a></div><div class="buttons"><a href="/index.php/Speciaal:GegevensBewerken/Comment?Comment%5BWS-Comment-page%5D=Titel&amp;NewComment=Yes" title="" target="_self">Nieuwe opmerking</a></div> 
 
</div> 
 
<p><br /> 
 
</p><p><br /> 
 
</p> 
 
Klik hier om terug te keren naar <a href="/index.php/Titel" title="Titel">Titel</a>.</div> 
 
</body></html>

Um alle Kommentare hole ich einfach einen neuen DOM-Parser erstellen:

$dom = new DOMDocument; 
libxml_use_internal_errors(true); 
$dom->loadHTML($text);  
$xpath = new DOMXPath($dom); 

$xpathResult = $xpath->query("//div[@class='comments']//div[@class='comments']"); 

Aber irgendwie liefert die XPath-Abfrage IMMER 0 zurück. Auch wenn ich // body verwende. Jeder Körper weiß warum?

Antwort

0

Die Xpath-Abfrage, die Sie verwenden, wird nur Knoten mit der Klasse comments greifen, die sich (tief) innerhalb eines anderen Knotens mit der Klasse comments befinden. Mit dem von Ihnen bereitgestellten HTML-Snippet wird 1 Knoten zurückgegeben.

+0

Die Erklärung ist richtig, aber die Bereitstellung des richtigen Selektors wird das OP sicherlich schneller zu Ende führen. – Jan

0

Sie Selektor duplizieren, rechts die ist:

$xpath->query("//div[@class='comments']"); // returns 3 
0

Keine Notwendigkeit für den doppelten Eintrag:

$xpathResult = $xpath->query("//div[@class='comments']"); 
# 3 elements found 

a working demo on ideone.com See.