小编pp1*_*9dd的帖子

删除父元素,使用saveHTML保留DOMDocument中的所有内部子元素

我正在使用XPath操作一个简短的HTML片段; 当我用$ doc-> saveHTML()输出更改的片段时,DOCTYPE会添加,并且HTML / BODY标签会包装输出.我想删除它们,但只使用DOMDocument函数将所有子项保留在内部.例如:

$doc = new DOMDocument();
$doc->loadHTML('<p><strong>Title...</strong></p>
<a href="http://www....."><img src="http://" alt=""></a>
<p>...to be one of those crowning achievements...</p>');
// manipulation goes here
echo htmlentities( $doc->saveHTML() );
Run Code Online (Sandbox Code Playgroud)

这会产生:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...>
<html><body>
<p><strong>Title...</strong></p>
<a href="http://www....."><img src="http://" alt=""></a>
<p>...to be one of those crowning achievements...</p>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我尝试了一些简单的技巧,例如:

# removes doctype
$doc->removeChild($doc->firstChild);

# <body> replaces <html>
$doc->replaceChild($doc->firstChild->firstChild, $doc->firstChild); 
Run Code Online (Sandbox Code Playgroud)

到目前为止,只删除DOCTYPE并用BODY替换HTML.但是,此时剩下的是body>可变数量的元素.

我如何删除<body>标签但保留其所有子节点,因为它们将以一种干净利落的方式使用PHP的DOM操作进行可变结构化?

php xpath domdocument

9
推荐指数
2
解决办法
9453
查看次数

标签 统计

domdocument ×1

php ×1

xpath ×1