HTMLPurifier - добавление в список игнорируемых - PullRequest
1 голос
/ 20 июля 2010

Я пытаюсь передать некоторые теги XML (abcdef>) через htmlpurifier. Поскольку сами теги не поддерживаются, я пытаюсь сначала добавить элемент, а затем добавить его в allowElements. Однако это не работает, я просто получаю пустую страницу. Любые идеи, пожалуйста, о том, что я делаю неправильно, или если есть более простой способ добиться того, что я ищу.

$config = HTMLPurifier_Config::createDefault();
$config->set('Core', 'Encoding', "UTF-8");
$config->set('HTML', 'DefinitionID', 'pinaki-test');
$config->set('HTML', 'DefinitionRev', 3);
$config->set('Cache', 'DefinitionImpl', null); // remove this later!
$config->set('Cache', 'SerializerPath', "/var/cache/htmlpurify");
$def = $config->getHTMLDefinition(true);
$def->addElement("tag1", false, 'Empty', 'Common', array());
$def->addElement("tag2", false, 'Empty', 'Common', array());
$config->set('HTML', 'AllowedElements', array("tag1", "tag2"));

Сообщите, если кому-то нужны какие-либо другие данные.

Примечание: Библиотека работает нормально, без добавления элементов.

1 Ответ

3 голосов
/ 20 июля 2010

Вы должны включить сообщение об ошибке;делает dev намного проще!

ini_set('display_errors', true);
error_reporting(E_ALL & ~E_NOTICE); // or E_ALL if you're feeling good

Исправление множества ошибок («не удается редактировать конфигурацию после финализации» означает, что все ваши настройки должны быть перед тем, как вы получите hTMLDefinition; устаревший API означает, что вы должны изменить формат набора настроекно безвреден), тогда вы получите пустую строку. Затем вам нужно убедиться, что ваши новые элементы находятся в разрешенных элементах кого-то еще, простой способ сделать это - пометить их как встроенные. Я сомневаюсь, что атрибут AllowedElements - то, что вам нужнопотому что это исключит все остальные элементы ...

<?php
require_once 'library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', "UTF-8");
$config->set('HTML.DefinitionID', 'pinaki-test');
$config->set('HTML.DefinitionRev', 3);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$config->set('Cache.SerializerPath', "/var/cache/htmlpurify");
$config->set('HTML.AllowedElements', array("tag1", "tag2"));
$def = $config->getHTMLDefinition(true);
$def->addElement("tag1", 'Inline', 'Empty', 'Common', array());
$def->addElement("tag2", 'Inline', 'Empty', 'Common', array());
$purifier = new HTMLPurifier($config);
echo $purifier->purify('<tag1>asf');
...