2010-10-05 80 views

回答

1

整洁是为你走的路。任何定制解决方案使用正则表达式会比tidy设计的更糟糕。

但真正的问题是,TinyMCE创建未关闭的标签听起来像您的TinyMCE安装有一些问题 - 您确定您使用的是最新版本(3.3.9.2)?只有在您手动操作HTML源代码时,才能输出未关闭的标签。

0

如果您不能使用Tidy,那么您可以利用DOM来清除未封闭和严重嵌套的标签。以下内容将在html和body容器标签中包含固定标记,但您可以通过快速的preg_replacestr_replace轻松处理。

error_reporting(0); 
header('Content-type: text/plain'); 

$html = '<p>Some <strong><em>badly</strong> formatted content</p>'; 

$xml = '<?xml version="1.0" encoding="utf-8" ?>' . $html; 

$dom = new DomDocument(); 
$valid = $dom->loadXML($xml); 

if (false === $valid) { 
    $doc = new DOMDocument(); 
    $doc->encoding = 'UTF-8'; 

    $doc->loadHTML($xml); 
    $html = simplexml_import_dom($doc)->asXML(); 
} 

echo $html;