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

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

我做错了什么?

最佳答案

我已经对 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/

相关文章:

php - Codeigniter 覆盖 DB Activerecord

php - Laravel 从数据库加载设置

php - 将 PHP 变量的内容打印为 HTML 中的文本字符串

html - 无法通过 btn-group open 打开下拉按钮组

php - 如何为 div id 设置条件

php - 偶数/奇数来确定 CSS 类

java - 模式中前两个字段的 key 未发送

c# - 如何使用 XPath 搜索 XML 文件,使用 C# 返回找到的节点的行号和列号?

xslt 变量 xpath 表达式

javascript - 通过简单脚本从元素中拆分特定文本