Использование Tidy для очистки HTML, содержание HTML меняется, проблема с кодировкой? - PullRequest
1 голос
/ 01 декабря 2009

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

& Ugrave; & Dagger; & Ugrave; & bdquo; & Oslash; & фунт; & Ugrave; & кинжалом; & Oslash; & ordf; & Ugrave; & hellip; & Oslash; & ordf; & Oslash; & фунт; & Ugrave; & fnof; & Oslash; & MACR; & Oslash; & фунт; & Ugrave; & кинжалом; & Ugrave; & fnof; & Oslash; & ordf; & Oslash; & plusmn; & Ugrave; & Scaron; & Oslash; & MACR;

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

Любые предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 01 декабря 2009

Попробуйте использовать второй аргумент для установки кодировки в parseString

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

0 голосов
/ 10 ноября 2015
$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

...