Найти последний текстовый узел в DOM - PullRequest
1 голос
/ 16 августа 2011

У меня есть html-строка:

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

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

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

1 Ответ

1 голос
/ 16 августа 2011

Предполагая

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...