如何使用Xpath按类选择正确的div?

时间:2017-08-14 23:40:47

标签: php html xpath domxpath

$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 &eacute;crire en FRANCAIS si ce n'est pas trop demand&eacute;?  
            <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>

我做错了什么?

1 个答案:

答案 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;
}

它应该更宽容一点。