2011-08-16 2 views
1

У меня есть строка html:Найти последний текстовый узел в DOM

$ string - строка, взятая у пользователя.

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

Как найти последний текстовый узел в дереве DOM с помощью PHP? Я хочу добавить некоторые дополнительные символы в конце строки. Затем я заменил старый текстовый узел на новую строку.

ответ

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> 

Если это не то, что вы считаете, последний узел, просьба уточнить этот вопрос.

+0

Отлично! Это именно то, что я искал. –

Смежные вопросы