如何配置HTMLPurifier不对内联style属性进行清理?
如何配置HTMLPurifier保留内联style属性不被修改
要让HTMLPurifier跳过对style属性值的清理和修改,你需要调整两项核心配置:
- 明确允许元素的style属性(确保不会被过滤掉)
- 禁用HTMLPurifier的CSS解析功能(避免对style内容做规范化处理)
修改后的代码示例:
require_once 'ezyang/htmlpurifier/library/HTMLPurifier.auto.php'; $config = HTMLPurifier_Config::createDefault(); // 允许所有元素使用style属性,若只需指定元素可改为'div.style,p.style'这类格式 $config->set('HTML.AllowedAttributes', '*.*.style'); // 禁用CSS解析,阻止HTMLPurifier修改style属性的内容 $config->set('CSS.Enable', false); $purifier = new HTMLPurifier($config); $dirty_html = '<div style="background-color: rgb(240, 240, 240);"> How configure HTMLPurifier to prevent sanitize of Inline-style Attribute ? </div>'; $clean_html = $purifier->purify($dirty_html); echo $clean_html;
补充说明
如果仍需要HTMLPurifier过滤非法CSS属性但保留值的原始格式,可以改用CSS.Trusted配置:
$config->set('CSS.Trusted', true);
该配置会让HTMLPurifier信任所有合法CSS属性,不会修改值的格式(如保留rgb(240, 240, 240)的空格和原始写法),但仍会过滤掉不安全的CSS属性(如expression这类)。
内容的提问来源于stack exchange,提问作者user5005768-hd
相关产品推荐
相关产品推荐

