2009-12-01 6 views
1

Я извлечение HTML из Smarty шаблон и нужно, чтобы очистить его (просто хочу, чтобы удалить лишние пробелы, и формат/Отступ HTML красиво), я использую аккуратным, чтобы сделать что-то вроде:Использование Tidy для очистки 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; 
 

While это работает нормально для английского, многоязычная поддержка, похоже, нарушает это. Например, у меня есть арабские символы в формате $ html, но после аккуратности я возвращаю некоторые неприятные кодировки:

& Ugrave; & Dagger; & Ugrave; „ & Oslash; £ & Ugrave; & dagger; & Oslash; ª & Ugrave; & hellip; & Oslash; ª & Oslash; £ & Ugrave; ƒ & Oslash; ¯ & Oslash; £ & Ugrave; & dagger; & Ugrave; ƒ & Oslash; ª & Oslash; & plusmn; & Ugrave; & Scaron; & Oslash; ¯

Есть ли настройка в порядке, которая будет форматировать HTML, но оставить сам HTML один? Я посмотрел этот пост: PHP "pretty print" HTML (not Tidy), но похоже, что это не сработает, так как я хватаю свой HTML из smarty.

Любые предложения оценены.

ответ

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; 

использование сырья в качестве параметра кодирования
Для сырых, аккуратных выходных значений будут выше 127 без их перевода на сущности и все арабские символы выше 127