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

Php 使用Tidy清理HTML,HTML内容正在更改,编码问题?,php,formatting,character-encoding,tidy,htmltidy,Php,Formatting,Character Encoding,Tidy,Htmltidy,我正在从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' =>

我正在从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中有阿拉伯字符ok,但在tidy之后,我得到了一些糟糕的编码:

Ù

在tidy中是否有一个设置可以格式化HTML,但不处理HTML本身?我看了这篇文章:但这似乎行不通,因为我从smarty那里获取HTML


如有任何建议,我们将不胜感激

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


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

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

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

$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;