使用Tidy来清理HTML,HTML内容正在改变,编码问题?

时间:2009-12-01 19:16:09

标签: php formatting character-encoding tidy htmltidy

我从一个聪明的模板中获取HTML并需要清理它(只是想删除额外的空格,并且很好地格式化/缩进HTML),我正在使用整洁来做类似的事情:


$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中有阿拉伯字符,但在整洁后我得到了一些讨厌的编码:

هٓأ††ØªÙ......تأكدأ††ƒƒØªØ±ÙŠØ¯

是否有一个整洁的设置会格式化HTML,但保留HTML本身?我查看了这篇文章:PHP "pretty print" HTML (not Tidy)但似乎这不起作用,因为我从smarty抓取我的HTML。

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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;

使用原始作为编码参数
对于原始,Tidy将输出大于127的值而不将其转换为实体,并且所有阿拉伯字符都高于127