HTMLPurifier изменяет сущности HTML для ввода страницы 1252 Windows - PullRequest
0 голосов
/ 19 октября 2018

Я использую HTMLPurifier для очистки пользовательских файлов HTML.Правильные входные файлы - это простые текстовые таблицы, но они создаются другой программой, которая не принадлежит мне и не может быть изменена или настроена, поэтому я застрял с файлами HTML как есть.Целью использования очистителя является защита от случайной или злонамеренной загрузки пользователями файлов, содержащих скрипты, ссылки на вредоносные сайты и т. Д.

Проблема заключается в том, что файлы используют кодовую страницу Windows 1252, которая содержит «1/ 2 ", и они также содержат HTML-сущность  .Оба эти символа вызывают проблемы в HTMLPurifier в его конфигурации по умолчанию.

На форумах HTMLPurifier имеется множество сообщений по этой проблеме, и рекомендуемое решение состоит в том, чтобы изменить все на кодировку символов UTF-8.Это не вариант для моего случая.Также упоминается изменение конфигурации на %Core.EscapeNonASCIICharacters или %Core.Encoding.Я пробовал это, но я не уверен, что мой синтаксис правильный.

Вот что я сейчас использую:

$config = HTMLPurifier_Config::createDefault();
$config->set('%Core.EscapeNonASCIICharacters', true);
$config->set('%Core.Encoding', 'ASCII');

$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($contentsIn);

Это не работает: он конвертирует оба &npsp;и от ½ (U + 00BD) до Â (начальный байт последовательности Unicode).

Как настроить HTMLPurifier для получения вывода, который сохраняет эти символы?

...