Как разрешить встроенные теги стиля в фильтрацию HTML Purifier

У меня возникли проблемы с удалением тегов стиля 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>

Я не понимаю, почему атрибут границы оставлен (но его значение удалено) и почему удален атрибут background-color. Как настроить, чтобы эти теги стилей пропускались через фильтр? Кроме того, я хочу разрешить любые значения стиля для атрибутов стиля, которые я разрешаю.


person Johan    schedule 18.10.2011    source источник
comment
Удаляется ли он, даже если вы закомментируете свою конфигурацию?   -  person Edward Z. Yang    schedule 19.10.2011
comment
Приношу извинения - после нескольких часов устранения неполадок я обнаружил ошибку, и она не была связана с HTML Purifier. Как только я это исправил, настройки конфигурации заработали, как и ожидалось. Спасибо за отличную библиотеку.   -  person Johan    schedule 19.10.2011


Ответы (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');

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

person Weltkind    schedule 20.03.2014