我在我的网站上使用tinymce作为文本编辑器。 有时当我写一些文本并保存它时,HTML代码是“破碎的”。 似乎有一些未公开的html标签打破了CSS布局。这是一个解决方案http://www.php.net/manual/en/tidy.examples.php
是否有其他技术(php)可以自动完成未关闭的标签?
答案 0 :(得分:1)
Tidy是你的最佳选择。任何定制解决方案使用正则表达式会比整理设计更糟糕。
但真正的问题是,TinyMCE正在创建未关闭的标签听起来像你的TinyMCE安装有问题 - 你确定你使用的是最新版本(3.3.9.2)吗?仅当您手动操作HTML源时,它才应输出未关闭的标记。
答案 1 :(得分:0)
如果你不能使用Tidy,那么你可以利用DOM来清除未封闭和严重嵌套的标签。以下内容将在html和body容器标记中包装固定标记,但您可以使用快速preg_replace
或str_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;