gpt4 book ai didi

php - DOM xpath 查找#text 节点并包裹在段落标记中

转载 作者:太空狗 更新时间:2023-10-29 13:26:47 25 4
gpt4 key购买 nike

我想找到所有应该被包裹在 <p> 中的根级 #text 节点(或那些有 div 父级的节点)标签。在下面的文本中应该有三个(甚至只有两个)最终根 <p>标签。

<div>
This text should be wrapped in a p tag.
</div>

This also should be wrapped.

<b>And</b> this.

这个想法是为了更好地格式化文本,以便将文本 block 分组为用于 HTML 显示的段落。但是,我一直在研究的以下 xpath 似乎无法选择文本节点。

    <?php

$html = '<div>
This text should be wrapped in a p tag.
</div>

This also should be wrapped.

<b>And</b> this.';

libxml_use_internal_errors(TRUE);

$dom = DOMDocument::loadHTML($html);

$xp = new DOMXPath($dom);

$xpath = '//text()[not(parent::p) and normalize-space()]';

foreach($xp->query($xpath) as $node) {
$element = $dom->createElement('p');
$node->parentNode->replaceChild($element, $node);
$element->appendChild($node);
}

print $dom->saveHTML();

最佳答案

好的,让我改写我的评论作为答案。如果要匹配所有文本节点,只需从 XPath 表达式中删除 //div 部分即可。于是就变成了:

//text()[not(parent::p) and normalize-space()]

关于php - DOM xpath 查找#text 节点并包裹在段落标记中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com