我正在使用 php tidy 清理包含样式标记的用户生成的 HTML 页面:
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
</style>
但是一旦我运行 Tidy,样式标签数据就会转换为 CData。我使用 Tidy 的主要目的是修复文件以及进行适当的缩进。
<style type="text/css">
/*<![CDATA[*/
body {
padding-top: 60px;
padding-bottom: 40px;
}
/*]]>*/
</style>
我的 Tidy 配置选项是 -
$options = array(
'preserve-entities' => true,
'hide-comments' => true,
'tidy-mark' => false,
'indent' => true,
'indent-spaces' => 4,
'new-blocklevel-tags' => 'article,header,footer,section,nav',
'new-inline-tags' => 'video,audio,canvas,ruby,rt,rp',
'doctype' => 'omit',
'sort-attributes' => 'alpha',
'vertical-space' => false,
'output-xhtml' => true,
'wrap' => 180,
'wrap-attributes' => false,
'break-before-br' => false,
'vertical-space' => false,
);
$buffer = tidy_parse_string($buffer, $options, 'utf8');
tidy_clean_repair($buffer);
我尝试了很多搜索,但 PHP Tidy 库并不完全是一个“有据可查”的库!所以它归结为在 Tidy 清理/修复代码后手动删除 CDATA。
$buffer = str_replace("/*<![CDATA[*/","",$buffer);
$buffer = str_replace("/*]]>*/","",$buffer);
现在我对这种方法的问题是样式标签数据的缩进仍然搞砸了(与页面的其余部分不完全对齐)
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
</style>
再说一遍,我如何防止 TIDY 在页面上创建 CDATA!
非常感谢!