Я использую 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 для получения вывода, который сохраняет эти символы?