使用DOM将文本节点附加和前置到HTML元素?

Tei*_*eiv 17 html php dom append prepend

这是我的HTML代码

<html> 
    <body>
        <div>A sample block <div>and child block</div></div>    
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何使用DOM在不伤害其兄弟姐妹的情况下将文本节点附加到文本节点并将其添加到BODY元素中?

$dom = new DOMdocument();    
@$dom->loadHTML($html);    
$xpath = new DOMXPath($dom);    
$body = $xpath->query('//body')->item(0);    
Run Code Online (Sandbox Code Playgroud)

像这样

<html> 
    <body>
        Newly prepended text
        <div>A sample block <div>and child block</div></div>
        Newly appended text    
    </body>
</html>  
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 24

您可以使用DOMText(或使用DOMDocument::createTextNode)创建文本节点:

$before = new DOMText('Newly prepended text');
// $before = $dom->createTextNode('Newly prepended text');
$after = new DOMText('Newly appended text');
// $after = $dom->createTextNode('Newly appended text');
Run Code Online (Sandbox Code Playgroud)

现在,追加只是:

$body->appendChild($after);
Run Code Online (Sandbox Code Playgroud)

对于前置,我们可以DOMNode::firstChild用来获得身体的第一个孩子,并且DOMNode::insertBefore:

$body->insertBefore($before, $body->firstChild);
Run Code Online (Sandbox Code Playgroud)

  • @ user433531:欢迎你:)快乐的编码,如果你庆祝它:圣诞快乐:) (2认同)