insertBefore()在PHP DOM中无法正常工作

insertBefore()在PHP DOM中无法正常工作,php,html,dom,Php,Html,Dom,我有这样的结构: <p>Second paragraph</p> <p>First paragraph</p> <p>Third paragraph</p> 我得到: First paragraphSecond paragraph 因此,我猜我在这里做错了什么。如果我回显所有有效的文档:来自: 因此,由于您没有指定引用节点,因此它将其附加到子节点。您的代码将生成以下HTML: <html> <body&

我有这样的结构:

<p>Second paragraph</p>
<p>First paragraph</p>
<p>Third paragraph</p>
我得到:

First paragraphSecond paragraph

因此,我猜我在这里做错了什么。

如果我回显所有有效的文档:

来自:

因此,由于您没有指定引用节点,因此它将其附加到子节点。您的代码将生成以下HTML:

<html>
<body>
    <p>First paragraph<p>Second paragraph</p></p>
    <p>Third paragraph</p>
</body>
</html>
输出:

<html>
<body>
    <p>First paragraph</p>
    <p>Second paragraph</p>
    <p>Third paragraph</p>
</body>
</html>

第一段

第二段

第三段

它“起作用”,但根本不能生成有效的HTML。
First paragraphSecond paragraph
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )

refnode
    The reference node. If not supplied, newnode is appended to the children.
<html>
<body>
    <p>First paragraph<p>Second paragraph</p></p>
    <p>Third paragraph</p>
</body>
</html>
$nodes = $dom->getElementsByTagName('p');
$nodes->item(0)->parentNode->insertBefore($nodes->item(1), $nodes->item(0));
echo $dom->saveHTML();
<html>
<body>
    <p>First paragraph</p>
    <p>Second paragraph</p>
    <p>Third paragraph</p>
</body>
</html>