Добавить атрибут в фильтр очистителя HTML? - PullRequest
2 голосов
/ 10 ноября 2009

Я пытаюсь разрешить атрибут rel элементам в фильтре HTML Purifier. Я следую этому руководству http://htmlpurifier.org/docs/enduser-customize.html и вот мой код:

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Strict');
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'href*', 'URI');
$def->addAttribute('a', 'rel', 'CDATA');
$purifier = new HTMLPurifier($config);

Однако, очиститель HTML все еще отфильтровывает все атрибуты rel ... Я немного запутался, в чем может быть проблема.

Когда я использую:

$config->set('Attr', 'AllowedRel', array('something'));

Я получаю эту ошибку:

Примечание. Использование устаревшего API: вместо строки 191 в файле C:\wamp\www\neonet\application\modules\admin\controllers\IndexController.php в строке C:\wamp\www\neonet\library\My\htmlpurifier-4.0.0-standalone\HTMLPurifier.standalone.php в строке 1819

EDIT:

Новый код:

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Strict');
$config->set('Attr.AllowedRel', array('something'));
$purifier = new HTMLPurifier($config);

Когда я использую:

<href="/" rel="something">anchor</a>

Атрибут Rel по-прежнему фильтруется.

1 Ответ

2 голосов
/ 10 ноября 2009

Эта директива конфигурации может представлять для вас интерес . Что касается вашего кода, он работает для меня; возможно, у вас включены магические кавычки или вы не очистили кеш должным образом? (Попробуйте увеличить DefinitionRev в этом случае.)

Другая классическая ошибка при попытке использовать rel заключается в том, что она не работает с XHTML Strict; этот doctype не определяет rel, поэтому Attr.AllowedRel ничего не делает (это должно быть упомянуто в документации, но это не так.) Итак, вам придется выбрать другой doctype, если вы хотите оставить галочку W3C или используйте оригинальный код.

...