Как разрешить атрибуты стиля в фильтрации очистителя HTML

#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');
  

Это работает для меня!