use*_*127 3 php appendchild domdocument createelement
我有一个 div,我试图在 div 中现有的 h3 和 p 元素之前插入几个元素(h3 和 p)。insertBefore ( http://www.php.net/manual/en/domnode.insertbefore.php )的 PHP 文档说这正是应该发生的情况,但它不是在现有元素之前插入,而是替换里面的所有现有元素我的“内容”分区。
这是我的代码:
$webpage = new DOMDocument();
$webpage->loadHTMLFile("news.html");
$headerelement = $webpage->createElement('h3', $posttitle);
$pelement = $webpage->createElement('p', $bodytext);
$webpage->formatOutput = true;
$webpage->getElementById('content')->insertBefore($headerelement);
$webpage->getElementById('content')->insertBefore($pelement);
$webpage->saveHTMLFile("newpost.html");
Run Code Online (Sandbox Code Playgroud)
我确信我只是不明白一些事情......任何帮助将不胜感激,谢谢。
这是因为您没有指定应在插入节点之前插入的引用节点。可以这样想:
$whatTheElementIsInsertedInto->insertBefore($theElement, $whatItIsInsertedBefore)
Run Code Online (Sandbox Code Playgroud)
$dom = new DOMDocument();
$dom->loadHtml('
<html><head></head>
<body>
<div id="content">
<h3>Original h3</h3>
</div>
</body>
</html>
');
//find the "content" div
$content = $dom->getElementById('content');
//find the first h3 tag in "content"
$origH3 = $content->getElementsByTagName('h3')->item(0);
//create a new h3
$newH3 = $dom->createElement('h3', 'new h3!');
//insert the new h3 before the original h3 of "content"
$content->insertBefore($newH3, $origH3);
echo $dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)