Поддержка тегов HTMLPurifier - PullRequest
2 голосов
/ 21 июня 2019

Я не могу сделать тег <label> распознаваемым HTMLPurifier.

Запуск

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'label');
$purifier = new HTMLPurifier($config);
echo $purifier->purify("<label>Link</label>");

Броски Warning: Element 'label' is not supported (for information on implementing this, see the support forums).

Также не повезло, используя addElement ()

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'test');
$config->set('HTML.DefinitionRev', 1);
if ($def = $config->maybeGetRawHTMLDefinition()) {
   $def->addElement('label', 'Block', 'Inline', 'Common', array());
}
$purifier = new HTMLPurifier($config);
echo $purifier->purify("<label>Link</label>");

Все еще возвращает только Link, где я ожидаю <label>Link</label>.Есть мысли?

Обновление : использование $config->set('HTML.Trusted', true); дает разницу, но отключает защиту XSS.Не вариант для меня.

1 Ответ

0 голосов
/ 21 июня 2019

После изменения конфигурации необходимо обязательно очистить кеш в vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/ или временно отключить кеширование с помощью

$config->set('Cache.DefinitionImpl', null);

Если вы используете $config->set('HTML.Allowed', 'h1,h2,...');, вам также нужно добавить туда label.

...