开发者

Find last text node in DOM

I have some html string:

$string - a string taken from user.

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

How can I find a last text node in DOM tree using PHP? What I want to do is to add some extra chars at the end of to 开发者_运维百科finded string. Next I'll replace old text node with the new string.


Assuming

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

Using this code:

$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();

will output:

<?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>

If this is not what you consider the last node, please clarify the question.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜