У меня проблема с 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. Их нужно вводить от пользователя, потому что часто они остаются статичными для последующих обновлений содержимого.