Пользовательские атрибуты htmlpurifier

Как разрешить настраиваемые атрибуты (html5 data- *) в HtmlPurifier?

Input:

<img src="/my.jpg" data-type="5" alt="" />

приводит к ошибке:

Attribute 'data-type' in element 'img' not supported 
(for information on implementing this, see the support forums) 

Параметры HtmlPurifier:

'HTML.AllowedAttributes' => array('img.src', 'a.href', 'img.data-type')

Ответ 1

Очиститель HTML определяет матрицу атрибутов, которые являются стандартными, и жалуется, когда вы пытаетесь использовать атрибут, который он не определен в этой матрице. Однако вы можете добавить новые атрибуты к определению по умолчанию, используя функцию HTMLDefinition:: addAttribute() следующим образом:

$config = HTMLPurifier_Config::createDefault();
$def = $config->getHTMLDefinition(true);
$def->addAttribute('img', 'data-type', 'Text');
$purifier = new HTMLPurifier($config);

Подробнее см. определение HTMLDefinition:: addAttribute. 'Text' вот тип атрибута, вы можете найти тип атрибута по умолчанию из AttrTypes.php