向HTML Purifier过滤器添加属性?

时间:2009-11-10 17:04:44

标签: php zend-framework htmlpurifier

我正在尝试在HTML Purifier过滤器中的元素中允许rel属性。我正在按照本指南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:使用$config->set('Attr.AllowedRel', ...)代替第1819行C:\wamp\www\neonet\application\modules\admin\controllers\IndexController.php中文件C:\wamp\www\neonet\library\My\htmlpurifier-4.0.0-standalone\HTMLPurifier.standalone.php中的第191行

编辑:

新代码:

$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 个答案:

答案 0 :(得分:2)

This configuration directive may be of interest给你。至于你的代码,它对我有用;也许你有魔术引号打开或没有正确刷新缓存? (在这种情况下尝试碰撞DefinitionRev。)

尝试使用rel时的另一个经典错误是它不适用于XHTML Strict;该doctype没有定义rel,因此Attr.AllowedRel不做任何事情(这应该在文档中提及但不是。)因此,如果你想保留你的W3C复选标记,你必须选择一个不同的doctype或使用原始代码。