2009-11-10 3 views
1

J'essaie d'autoriser l'attribut rel dans un élément du filtre HTML Purifier. Je suis ce guide http://htmlpurifier.org/docs/enduser-customize.html et voici mon code:Ajouter un attribut au filtre HTML Purifier?

$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); 

Cependant, le purificateur HTML est encore filtrer sur tous les attributs rel ... Je suis un peu confus ce que le problème pourrait être.

Quand j'utilise:

$config->set('Attr', 'AllowedRel', array('something')); 

Je reçois cette erreur:

Notice: Using deprecated API: use $config->set('Attr.AllowedRel', ...) instead on line 191 in file C:\wamp\www\neonet\application\modules\admin\controllers\IndexController.php in C:\wamp\www\neonet\library\My\htmlpurifier-4.0.0-standalone\HTMLPurifier.standalone.php on line 1819

EDIT:

Nouveau code:

$config = HTMLPurifier_Config::createDefault(); 
$config->set('HTML.Doctype', 'XHTML 1.0 Strict'); 
$config->set('Attr.AllowedRel', array('something')); 
$purifier = new HTMLPurifier($config); 

Quand j'utilise:

<href="/" rel="something">anchor</a> 

L'attribut Rel est toujours filtré.

Répondre

2

This configuration directive may be of interest à vous. En ce qui concerne votre code, cela fonctionne pour moi; peut-être avez-vous des guillemets magiques activés ou n'avez pas jeté le cache correctement? (Essayez bumping DefinitionRev dans ce cas.)

L'autre erreur classique lors de l'utilisation de rel est que cela ne fonctionne pas avec XHTML Strict; ce doctype ne définit pas rel, donc Attr.AllowedRel ne fait rien (ceci devrait être mentionné dans les docs mais ne l'est pas.) Donc, vous devrez choisir un doctype différent si vous voulez garder votre coche W3C ou utilisez le code original.

+0

Oui mais quand j'essaie de l'utiliser, j'obtiens une erreur, voir ci-dessus, j'ai édité mon post. –

+0

Ok ignorer le dernier commentaire, j'utilisais l'API obsolète ... mais cela ne fonctionne toujours pas. –

+0

Merci, je vais changer le doctype. –