2016-06-02 2 views
1

У меня есть следующий HTML-код:PHP XPath запрос не работает

<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>

Чтобы извлечь все комментарии я просто создать новый DOM парсер:

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

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

Но почему-то запрос xpath ALWAYS возвращает 0. Даже когда я использую // body. Любое тело знает почему?

ответ

0

Запрос Xpath, который вы используете, будет захватывать узлы с классом comments, которые расположены (глубоко) внутри другого узла с классом comments. С предоставленным вами фрагментом HTML он вернет 1 узел.

+0

Объяснение правильно, однако предоставление правильного селектора наверняка приведет OP быстрее к концу. – Jan

0

Вы дублировать селектор, право использования является:

$xpath->query("//div[@class='comments']"); // returns 3 
Смежные вопросы