dongse5528 2011-08-16 13:08
浏览 63

在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.

  • 写回答

1条回答 默认 最新

  • duanmao7553 2011-08-16 13:17
    关注

    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.

    评论

报告相同问题?