1

我正在使用 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 以便它将剥离任何不具有特定值属性的元素。

例如,我可能想删除

<p class="badParagraph" />

但不是

<p class="goodParagraph" /> 

有谁知道这是否可行,如果可以,该怎么做?

谢谢!

4

1 回答 1

0

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

于 2011-08-22T04:13:38.860 回答