HTML Purifier удаляет идентификаторы даже с $config-›set('Attr.EnableID', true);

У меня проблема с HTML Purifier, когда он удаляет идентификаторы в элементах заголовка, несмотря на использование параметров конфигурации, чтобы избежать такого поведения.

Прямо сейчас я использую:

// set up HTML Purifier for user inputs
require_once 'htmlpurifier/library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$config->set('Attr.EnableID', true);
$config->set('HTML.Trusted', true);

$purifier = new HTMLPurifier($config);

Затем я подаю ему строку вроде:

<h6 id="1843804297">This is a title</h6><h5 id="1979691494">This one too.</h5><h3 id="932393874">I think you see where this is going.</h3>

Я также безрезультатно пытался создавать записи в белом списке для заголовков с идентификаторами и даже напрямую манипулировать значениями по умолчанию, хранящимися в объекте $config.

$config->def->defaults['Attr.EnableID'] = true;

Идентификаторы важны, потому что они назначаются сценарием PHP, хранятся в MySQL, а затем подхватываются системой навигации JS. Их нужно вводить от пользователя, потому что часто они остаются статичными для последующих обновлений содержимого.


person Barney D.    schedule 16.01.2014    source источник


Ответы (1)


Я полагаю, это связано с тем, что числовые идентификаторы недействительны в HTML4.

Токены ID и NAME должны начинаться с буквы ([A-Za-z]), за ними может следовать любое количество букв, цифр ([0-9]), дефисов («-»), подчеркиваний («_») , двоеточия (":") и точки (".").

Попробуйте использовать другие идентификаторы или измените тип документа.

person undefined    schedule 16.01.2014
comment
А, мне было интересно, не связано ли это с типом документа. Я сделаю это завтра утром и отмечу это как ответ, если это сработает. - person Barney D.; 17.01.2014