$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>
我做错了什么?
答案 0 :(得分:0)
我已经尝试过使用这两段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;
}
它应该更宽容一点。