$divs = $xpathsuj->query("//div[@class='txt-msg text-enrichi-forum ']");
$div = $divs[$i];
使用这个 XPath 命令,我可以选择类为“txt-msg text-enrichi-forum”的 div:
<div class="bloc-contenu">
<div class="txt-msg text-enrichi-forum ">
<p>Tu pourrais écrire en FRANCAIS si ce n'est pas trop demandé?
<img src="http://image.jeuxvideo.com/smileys_img/54.gif" alt=":coeur:" data-code=":coeur:" title=":coeur:" width="21" height="20" />
</p>
</div>
</div>
但不是这个:
<div class="bloc-contenu">
<div class="txt-msg text-enrichi-forum ">
<p>
<img src="http://image.jeuxvideo.com/smileys_img/42.gif" alt=":salut:" data-code=":salut:" title=":salut:" width="46" height="41" />
</p>
</div>
<div class="signature-msg text-enrichi-forum ">
<p>break;</p>
</div>
</div>
我做错了什么?
最佳答案
我已经对 XML 的两个段进行了尝试,它似乎对两者都有效,但间距可能存在一些问题。
在您的 XPath 查询中,您正在寻找 'txt-msg text-enrichi-forum '
的精确匹配,它在 txt-msg
之后有两个空格,在之后有一个空格最后一部分。如果缺少任何空格,则不会找到该元素。
如果你把它改成...
$divs = $xpathsuj->query("//div[contains(@class,'txt-msg') and contains(@class,'text-enrichi-forum')]");
foreach ( $divs as $div ) {
echo $doc->saveXML($div).PHP_EOL;
}
应该宽容一点。
关于php - 如何使用 Xpath 按类选择正确的 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684569/