我正在尝试通过htmlpurifier传递一些XML标记(abcdef>)。由于标签本身不受支持,我首先尝试添加元素,然后将其添加到allowedElements。但是这不起作用,我只是得到一个空白页面。任何想法请关于我做错了什么,或者是否有更简单的方法来实现我正在寻找的东西。
$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"));
让我们知道是否有人需要任何其他细节。
注意:该库工作正常,无需添加元素。
答案 0 :(得分:3)
您应该启用错误报告;让开发更容易!
ini_set('display_errors', true);
error_reporting(E_ALL & ~E_NOTICE); // or E_ALL if you're feeling good
修复了一堆错误(“无法在完成后编辑配置意味着您需要在获得HTML定义之前完成所有配置;不推荐的API意味着您应该更改配置集格式但是无害”),然后您将获得一个空白字符串。然后你需要确保你的新元素在其他人的允许元素中,一个简单的方法是将它们标记为内联。我怀疑AllowedElements属性是你想要的,因为它将排除所有其他元素...... / p>
<?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');