我在使用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>
我不明白为什么会留下border属性(但它的值被剥离),以及为什么要删除background-color属性。如何配置以便允许这些样式标记通过过滤器?另外,我想允许我允许的样式属性的任何样式值。
答案 0 :(得分:1)
试试这个:
$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');
这对我有用!