Как разрешить встроенные теги стиля в фильтрации HTML-очистителя - PullRequest
3 голосов
/ 19 октября 2011

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

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

1 Ответ

1 голос
/ 20 марта 2014

Попробуйте:

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

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

...