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);
魅力のように機能します。
しかし...
SPECIFIC 値を持つ属性を持たない要素を削除するように HtmlPurifer を構成できるかどうか疑問に思っています。
たとえば、削除したい場合があります
<p class="badParagraph" />
だがしかし
<p class="goodParagraph" />
これが可能かどうか、また可能であればどうすればよいか誰にもわかりませんか?
ありがとう!