1

我正在尝试通过 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"));

让知道是否有人需要任何其他详细信息。

注意:库在不添加元素的情况下工作正常。

4

1 回答 1

3

您应该打开错误报告;让开发更容易!

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');
于 2010-07-20T17:25:23.280 回答