Pergunta

Eu estou tentando permitir atributo rel em um elementos dentro do filtro HTML Purifier. Eu estou seguindo este guia http://htmlpurifier.org/docs/enduser-customize.html e aqui está o meu código:

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

No entanto, o purificador de HTML ainda está filtrando todos os atributos rel ... Eu estou um pouco confuso que o problema poderia ser.

Quando eu uso:

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

Eu recebo este erro:

Aviso: Usando deprecated API: $config->set('Attr.AllowedRel', ...) uso em vez na linha 191 em C:\wamp\www\neonet\application\modules\admin\controllers\IndexController.php arquivo em C:\wamp\www\neonet\library\My\htmlpurifier-4.0.0-standalone\HTMLPurifier.standalone.php na linha 1819

EDIT:

Novo código:

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

Quando eu uso:

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

atributo Rel ainda é filtrado.

Foi útil?

Solução

Esta diretiva de configuração podem ser de interesse para você. Quanto ao seu código, ele funciona para mim; talvez você tenha magic quotes ligado ou não descarregou a apropriadamente em cache? (Tente bater DefinitionRev nesse caso.)

O outro erro clássico ao tentar usar rel é que ele não funciona com o XHTML Strict; que tipo de documento não define rel, então Attr.AllowedRel não faz nada (isto deve ser mencionado na documentação, mas não é.) Então, você vai ter que escolher um tipo de documento diferente se você quer manter sua marca W3C ou usar o código original.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top