这是我长期以来遇到的一个问题 - 我目前接受来自用户的完整html页面作为输入,并希望过滤/清除它。 HTMLpurifier的问题在于它删除了head,html和body标签 - 以及头部中的样式。我谷歌,看了论坛,尝试实现写的东西,没有运气。有人可以帮忙吗?
我想要的:保持HTML,HEAD,STYLE,BODY TAGS
我做了什么:
$config->set('HTML.DefinitionID', 'test');
$config->set('HTML.DefinitionRev', 1);
$config->set('HTML.AllowedElements', array('html','head', 'body', 'style', 'div', 'p'));
if ($def = $config->maybeGetRawHTMLDefinition()) {
$def->addElement('html', 'Block', 'Inline', 'Common', array());
$def->addElement('head', 'Block', 'Inline', 'Common', array());
$def->addElement('style', 'Block', 'Inline', 'Common', array());
$def->addElement('body', 'Block', 'Inline', 'Common', array());
}
答案 0 :(得分:0)
为什么不使用strip_tags?它支持允许的标签列表。
答案 1 :(得分:0)
你需要
$config->set('Core.ConvertDocumentToFragment', false);
无论出于何种原因,Core.ConvertDocumentToFragment
默认为true
,即使文档指出"for most inputs, this processing is not necessary"。
我也被这个咬了。我从错误收集器获得的只是隐藏的消息“删除文档元数据标签”,而这又是内部消息“Lexer:Extracted body”的翻译。
答案 2 :(得分:0)
结束结果 - HTMLPurfier本身不允许完整的HTML解析 - 扩展它或找到传递