Php ';内容保存前&x27;滤波器

Php ';内容保存前&x27;滤波器,php,wordpress,dom,Php,Wordpress,Dom,我有一个Wordpress插件,可以在发布后从帖子的HTML生成PDF 问题是,在插件生成PDF之前,我需要对HTML执行一些测试,而且我只能使用内置的DOM解析器 使用“content\u save\u pre”过滤器,我可以操作帖子内容并返回一个简单的字符串,一切正常。 但如果我尝试以下代码: public function lintHTML( $post_content ) { $dom = new DOMDocument(); $dom->loadHTML( $po

我有一个Wordpress插件,可以在发布后从帖子的HTML生成PDF

问题是,在插件生成PDF之前,我需要对HTML执行一些测试,而且我只能使用内置的DOM解析器

使用“content\u save\u pre”过滤器,我可以操作帖子内容并返回一个简单的字符串,一切正常。 但如果我尝试以下代码:

public function lintHTML( $post_content ) {
    $dom = new DOMDocument();
    $dom->loadHTML( $post_content );
    return $dom->saveHTML();
}
当我发布我的帖子时,一切都崩溃了,我在浏览器上收到一条“此页面不工作”的消息


当我回到编辑后的页面时,一切似乎都正常。

$post\u内容不是一个完整的HTML文档,而是一个HTML片段。PHP DOMDocument将尝试在保存之前通过将其嵌入适当的HTML文档来修复此问题

$dom=new DOMDocument();
$dom->loadHTML('<div>AAAA</div>');
echo $dom->saveHTML();
$dom=newdomdocument();
$dom->loadHTML('AAAA');
echo$dom->saveHTML();
收益率:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><div>AAAA</div></body></html>

AAAA

因此,您需要删除“填充”以获得转换后的帖子内容。

谢谢,我尝试过将其剪切,但没有解决问题。您确实需要删除“填充”,但还有其他问题。能否将$dom->saveHTML()的输出转储到错误日志中,并在问题中显示出来。