2

HTMLPurifierフィルター内の要素で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を使おうとしたときのもう1つの典型的なエラーは、XHTMLStrictでは機能しないことです。そのDoctypeはrelを定義しないため、Attr.AllowedRelは何もしません(これはドキュメントに記載されているはずですが、そうではありません)。したがって、W3Cチェックマークを保持する場合は、別のDoctypeを選択する必要があります。または、元のコードを使用します。

于 2009-11-10T17:41:11.360 に答える