2

我试图在 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:在第 1819行的文件中的$config->set('Attr.AllowedRel', ...)第 191行使用C:\wamp\www\neonet\application\modules\admin\controllers\IndexController.phpC:\wamp\www\neonet\library\My\htmlpurifier-4.0.0-standalone\HTMLPurifier.standalone.php

编辑:

新代码:

$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 属性仍然被过滤。

4

1 回答 1

2

您可能会对这个配置指令感兴趣。至于你的代码,它对我有用;也许您打开了魔术引号或没有适当地刷新缓存?(在这种情况下尝试增加 DefinitionRev。)

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

于 2009-11-10T17:41:11.360 回答