如何使用 DOMDocument insertBefore

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)

我确信我只是不明白一些事情......任何帮助将不胜感激,谢谢。

m59*_*m59 6

这是因为您没有指定应在插入节点之前插入的引用节点。可以这样想:

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