如何在 PHP 中使用 XPath 设置 (not(contains))

Posted

技术标签:

【中文标题】如何在 PHP 中使用 XPath 设置 (not(contains))【英文标题】:How to set up a (not(contains)) with XPath in PHP 【发布时间】:2011-08-30 11:33:17 【问题描述】:

我正在使用此 php 代码在特定条件下获取所有包含“$profile_name”的文本。

它可以正常工作,但我还需要提取所有“不”包含“$profile_name”的文本 在相同的条件下。

像这样:

$outputs = $xpath->query("//span[@class='profile' and   

not(contains(.,'$profile_name'))]/../div[@class='msgbody']");

好吧,看起来这段代码确实有效,下面的那个,但我发现问题实际上是这段 html

<span class="profile">Jim Jones</span> to <span class="profile">Ronald Weasly                     
Stitch</span>

在这种情况下,用户 Jim Jones 给 Ronald Weasly 写了一条回复,但我把它误认为是 Ronald Weasly,因为那是最近的时间跨度。

<span class="profile">Jim Jones</span> to <span class="profile">Ronald Weasly</span>

<span class="time">October 21, 2010 at 10:44 am</span>

<div class="msgbody">

<div class="subject">Jeeec</div>

are you developing applications with C+ or ASP, did you see The Social Network? i sense               
a huge opportunity for semantic analysts in the future.

</div>

</div>

【问题讨论】:

【参考方案1】:

使用

//*[div[@class='msgbody']]
         /span[@class='profile' 
             and 
               not(contains(.,'$profile_name'))
              ]

【讨论】:

哇,你把我弄丢了。我想与原始查询相比发生了很大变化,我无法从中做出正面或反面。我不明白它的一部分是如何成为评论的。我假设我需要它来指定要搜索的 div 类。我的意思是排除查询是一个完全独立的查询,但只是我找不到“不包含”的正确语法 我能够让它返回所有不相等的名称,但不返回相应的 msgbody。使用此代码。 $outputs = $xpath-&gt;query("//*[div[@class='msgbody']] /span[@class='profile' and not(contains(.,'$profile_name'))]"); 试过这个$outputs = $xpath-&gt;query("//*[div[@class='msgbody']] /span[@class='profile' and not(contains(.,'$profile_name'))]/../div[@class='msgbody']"); 此代码不返回任何结果$outputs = $xpath-&gt;query("//span[@class='profile' and not(contains(.,'$profile_name'))]//*[div[@class='msgbody']]"); 此代码返回所有不相等的名称。关闭。 $outputs = $xpath-&gt;query("//*[div[@class='msgbody']] //span[@class='profile' and not(contains(.,'$profile_name'))]");

以上是关于如何在 PHP 中使用 XPath 设置 (not(contains))的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XPath 中使用 not contains()?

如何使用php在xpath中使用变量作为属性值?

在 xpath 中使用 [not] 检索与给定值不匹配的内容 (PLSQL)

如何在 PHP 中使用 DOM 或 XPATH 获取最近的子节点而不是嵌套的子节点

如何使用 xpath/php 获取 xml 文件中的节点名称?

Xpath不会返回content within (is not the issue)