加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Xpath选择没有子节点的节点

发布时间:2020-12-13 16:16:56 所属栏目:PHP教程 来源:网络整理
导读:我有一个网页,我想通过代码修改(添加特定单词的链接). HTML代码: div class="section"h2Notre histoire/h2p style="text-align: justify;"SPECIFICS WORDSstrong1998 : la création/strong/pp style="text-align: justify;"pour objectif ? de promouvoir,
我有一个网页,我想通过代码修改(添加特定单词的链接).

HTML代码:

<div class="section">
<h2>Notre histoire</h2>
<p style="text-align: justify;">SPECIFICS WORDS<strong>1998 : la création</strong></p>
<p style="text-align: justify;">pour objectif ? de promouvoir,selon une démarche d’éducation active,auprès des jeunes et à travers eux,des projets d’expression collective et d’action de solidarité ? (article 2).<br><br><strong>1999-2001 : les débuts SPECIFICS WORDS</strong></p>
<p style="text-align: justify;">SPECIFICS WORDS<a href="#">SPECIFICS WORDS</a></p>
</div>

所以我的目标是prepec_replace在SPECIFIC WORDS上,但只有那些在P中,但是从A或STRONG或任何一个标签出来的人.

我不能使用任何类,或任何id,因为我以前不知道代码!
我尝试了preg_replace PHP函数,但它没有用,而且执行时间太长.

所以我的问题是:
如何用XPATh选择没有A,STRONG,IMG chidrens的节点?

解决方法

没有孩子的情况下,您无法选择节点.节点是树的子部分,除非它是叶子,在这种情况下它没有其他子节点.要选择包含单词“SPECIFIC”的TextNode叶子,它们是P元素的直接子元素,您可以这样做

//p/text()[contains(.,'SPECIFIC')]

这将排除其他元素内的文本节点,例如在强者或.

要替换它们,你可以

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//p/text()[contains(.,"SPECIFIC")]') as $textNode) {
    $textNode->nodeValue = "REPLACED";
}
echo $dom->saveHTML();

另见DOMDocument in php和XPath Tutorial

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读