我正在使用HTMLPurifier清理我从表单中获得的一些超文本标记语言。但是,当我在配置上调用getHTMLDefinition()时,它会导致HTMLPurifier->purify()抛出一个警告。
下面是我的设置:
$HPConfig = HTMLPurifier_Config::createDefault();
$HPConfig->set('Cache.SerializerPath', APPLICATION_ROOT.'/forums/cache/HtmlPurifier');
$HPConfig->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$HPConfig->set('HTML.AllowedElements', ['p','br','img','i','b']);
$HPConfig->set('HTML.AllowedAttributes', ['href','style']);
$HPConfig->set('CSS.AllowedProperties', 'text-align');
$HPConfig->set('HTML.DefinitionID', 'myapp-text.html');
$HPConfig->set('HTML.DefinitionRev', 2);
$def = $HPConfig->getHTMLDefinition(true);
$HtmlPurifier = new HTMLPurifier($HPConfig);
$text = $HtmlPurifier->purify($text);当我使用上面的代码时,我的脚本抛出这个警告:
Warning: Global attribute 'href' is not supported in any elements (for information on implementing this, see the support forums) in /var/...但是,如果我只是删除$def = $HPConfig->getHTMLDefinition(true);行,警告就会消失。getHTMLDefinition()方法做了什么使HTMLPurifier的行为发生变化?有没有办法防止这种情况发生?
发布于 2015-07-24 04:02:44
警告是正确的:并不是所有元素都支持href,所以您必须在a标记上使用a.href才能允许使用href。
https://stackoverflow.com/questions/31577466
复制相似问题