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.
精彩评论