PHP - DOMDocument - 需要更改/替换现有的HTML标签

Jam*_*ine 7 html php dom

我正在尝试将<P>文档中的所有标记更改为<DIV>.这就是我想出来的,但它似乎不起作用:

$dom = new DOMDocument;
$dom->loadHTML($htmlfile_data);

foreach( $dom->getElementsByTagName("p") as $pnode ) {
    $divnode->createElement("div");
    $divnode->nodeValue = $pnode->nodeValue;
    $pnode->appendChild($divnode);
    $pnode->parentNode->removeChild($pnode);
}
Run Code Online (Sandbox Code Playgroud)

这是我想要的结果:

之前:

<p>Some text here</p>
Run Code Online (Sandbox Code Playgroud)

后:

<div>Some text here</div>
Run Code Online (Sandbox Code Playgroud)

Sam*_*zog 9

您将附加div到您的p结果<p><div></div></p>,删除p将删除所有内容.
另外,$divnode->createElement()$divnode未初始化时不起作用.

请尝试使用DOMDocument :: replaceChild()(divdom中的s位置将与ps 相同).

foreach( $dom->getElementsByTagName("p") as $pnode ) {
    $divnode = $dom->createElement("div", $pnode->nodeValue);
    $dom->replaceChild($divnode, $pnode);
}
Run Code Online (Sandbox Code Playgroud)

  • 猜猜看:我在回答的时候实际测试了这个.因此,如果您使用最新的PHP版本,foreach可以处理索引的操作. (2认同)