在DOM中查找最后一个文本节点

时间:2011-08-16 13:08:39

标签: php dom text

我有一些html字符串:

$ string - 取自用户的字符串。

$dom = new DomDocument;
$dom ->preserveWhiteSpace = false;
$dom ->loadHTML('<?xml encoding="UTF-8">'.$string);

如何使用PHP在DOM树中找到最后一个文本节点?我想要做的是在结束字符串的末尾添加一些额外的字符。接下来,我将用新字符串替换旧文本节点。

1 个答案:

答案 0 :(得分:1)

假设

$xml = <<< XML
<a>
    First Text Node
    <b>foo</b>
    Another Text Node
    <c>bar</c>
    Not the last Text Node
    <empty/>
</a>
XML;

使用此代码:

$dom = new DOMDocument;
$dom->loadXml($xml);
$xp = new DOMXPath($dom);
$textNodes = $xp->query('//text()');
$lastTextNode = $textNodes->item($textNodes->length - 1);
$lastTextNode->nodeValue .= 'some stuff appended to the end';
echo $dom->saveXml();

将输出:

<?xml version="1.0"?>
<a>
    First Text Node
    <b>foo</b>
    Another Text Node
    <c>bar</c>
    Not the last Text Node
    <empty/>
some stuff appended to the end</a>

如果这不是您认为的最后一个节点,请澄清问题。