1

我正在从 smarty 模板中获取 HTML 并需要对其进行清理(只是想删除多余的空格,并很好地格式化/缩进 HTML),我正在使用 tidy 来执行以下操作:


$html = $smarty->fetch('foo.tmpl');

$tidy = new tidy;
$tidy->parseString($html, array(
    'hide-comments' => TRUE,
    'output-xhtml' => TRUE,
    'indent' => TRUE,
    'wrap' => 0
));
$tidy->cleanRepair();
return $tidy;

虽然这适用于英语,但多语言支持似乎打破了这一点。例如,我在 $html 中有阿拉伯字符,但整理后我得到了一些讨厌的编码:

هل أنت متأكد أنك تريد

是否有一个 tidy 设置可以格式化 HTML,但不考虑 HTML 本身?我看了这篇文章:PHP "pretty print" HTML (not Tidy)但似乎这行不通,因为我是从 smarty 那里获取我的 HTML 的。

任何建议表示赞赏。

4

2 回答 2

1

尝试使用第二个参数在 parseString 中设置编码

http://www.php.net/manual/en/tidy.parsestring.php

于 2009-12-01T19:48:45.343 回答
0
$html = $smarty->fetch('foo.tmpl');

$tidy = new tidy;
$tidy->parseString($html, array(
    'hide-comments' => TRUE,
    'output-xhtml' => TRUE,
    'indent' => TRUE,
    'wrap' => 0
            ),
'raw');
$tidy->cleanRepair();
return $tidy;

使用raw作为编码参数
对于raw,Tidy 将输出 127 以上的值而不将它们转换为实体,并且所有阿拉伯字符都在 127 以上

于 2015-11-10T19:27:48.100 回答