我有一个div,我试图在已经存在于div中的现有h3和p元素之前将div元素(h3和p)插入到div中。 insertBefore(http://www.php.net/manual/en/domnode.insertbefore.php)的PHP文档说明这正是应该发生的事情,但它不是在现有元素之前插入,而是替换我'content'div中的所有现有元素。
这是我的代码:
$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");
我确定我只是不理解某些东西......任何帮助都会受到赞赏,谢谢。
答案 0 :(得分:2)
这是因为您没有指定插入节点之前应该插入的引用节点。可以这样想:
$whatTheElementIsInsertedInto->insertBefore($theElement, $whatItIsInsertedBefore)
<强> Live demo (click). 强>
$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();