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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Xpath选择没有子节点的节点脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个网页,我想通过代码修改(添加特定单词的链接).

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 phpXPath Tutorial

脚本宝典总结

以上是脚本宝典为你收集整理的php – Xpath选择没有子节点的节点全部内容,希望文章能够帮你解决php – Xpath选择没有子节点的节点所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。