Htmlpurifier 如何在HTML净化器过滤中允许内联样式标记

Htmlpurifier 如何在HTML净化器过滤中允许内联样式标记,htmlpurifier,Htmlpurifier,HTMLPurifier删除我的样式标记时遇到问题。这是我使用的(测试)配置: $config = HTMLPurifier_Config::createDefault(); $config->set('Core.Encoding', 'UTF-8'); // replace with your encoding $config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype $

HTMLPurifier删除我的样式标记时遇到问题。这是我使用的(测试)配置:

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
$config->set('Cache.DefinitionImpl', null);
$config->set('HTML.AllowedElements','div');
$config->set('HTML.AllowedAttributes', "*.style");
$config->set('CSS.AllowedProperties', 'background-color');
当我过滤这个HTML时:

<div style="background-color: #fff;">test</div>
<div style="border: 1px solid #000;">test</div>
测试
测试
这就是我得到的:

<div>test</div>
<div style="border:;">test</div>
测试
测试
我不明白为什么边界属性被保留(但它的值被剥离),为什么背景色属性被删除。如何配置这些样式标记以允许通过过滤器?此外,我还想为我允许的样式属性允许任何样式值。

尝试以下操作:

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$config->set('CSS.Trusted', 'HTML 4.01 Transitional'); // allow any css
$config->set('HTML.Allowed','div[style]');
$config->set('CSS.AllowedProperties', 'background-color');

这对我有用

即使你注释掉你的配置,它也会被删除吗?我很抱歉-经过几个小时的故障排除,我发现了这个错误,它与HTML净化器无关。一旦我修复了它,配置设置就按预期工作了。谢谢你提供了一个很棒的图书馆。