是否可以配置HtmlPurifer来剥离具有特定值属性的标记?

时间:2011-08-21 20:40:16

标签: php htmlpurifier

我正在使用HtmlPurifer来清理html输入。

这是我的HtmlPurifer配置:

        $config = HTMLPurifier_Config::createDefault();
        $config->set('Core.Encoding', 'UTF-8'); 
        $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); 
        $config->set('HTML.AllowedAttributes', "*.style,a.href,a.target,img.src,img.height,img.width");
        $config->set('HTML.AllowedElements','a,p,ol,li,ul,b,u,strike,br,span,img,div');
        $config->set('HTML.ForbiddenAttributes', "*@class,div@*");
        $config->set('Attr.AllowedFrameTargets', array('_blank'));
        $config->set('CSS.AllowedProperties', array('text-decoration', 'font-weight', 'font-style'));
        $config->set('AutoFormat.RemoveSpansWithoutAttributes', true);
        $config->set('AutoFormat.RemoveEmpty', true);
        $purifier = new HTMLPurifier($config);
        $sanitized = $purifier->purify($data);

像魅力一样。

但是...

我想知道是否可以配置HtmlPurifer,以便它将剥离任何没有具有SPECIFIC值的属性的元素。

例如,我可能想删除

<p class="badParagraph" />

但不是

<p class="goodParagraph" /> 

有谁知道这是否可能,如果有的话,该怎么办呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如相应的HTML Purifier线程中所提到的,目前还没有一种简单的方法可以做到这一点。注射器是一种相当通用的机制,您可以通过它实现这一点;在这种情况下,请查看RemoveEmpty以获得一些灵感。