#htmlpurifier
#htmlpurifier
Вопрос:
У меня возникли проблемы с HTMLPurifier, удаляющим мои теги стилей. Это (тестовая) конфигурация, которую я использую:
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
$config->set('Cache.DefinitionImpl', null);
$config->set('HTML.AllowedElements','div');
$config->set('HTML.AllowedAttributes', "*.style");
$config->set('CSS.AllowedProperties', 'background-color');
И когда я фильтрую этот HTML:
<div style="background-color: #fff;">test</div>
<div style="border: 1px solid #000;">test</div>
Это то, что я получаю:
<div>test</div>
<div style="border:;">test</div>
Я не понимаю, почему атрибут границы оставлен (но его значение удалено) и почему атрибут цвета фона удален. Как мне настроить, чтобы эти теги стиля были разрешены через фильтр? Кроме того, я хочу разрешить любые значения стиля для атрибутов стиля, которые я разрешаю.
Комментарии:
1. Он удаляется, даже если вы закомментируете свою конфигурацию?
2. Я прошу прощения — после еще нескольких часов устранения неполадок я обнаружил ошибку, и она не была связана с HTML Purifier. Как только я это исправил, настройки конфигурации работали так, как ожидалось. Спасибо за отличную библиотеку.
Ответ №1:
Попробуйте это:
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$config->set('CSS.Trusted', 'HTML 4.01 Transitional'); // allow any css
$config->set('HTML.Allowed','div[style]');
$config->set('CSS.AllowedProperties', 'background-color');
Это работает для меня!