Yii2下好用的富文本过滤器htmlpurifier

在使用yii2框架的时候会用到htmlpurifierhtmlpurifier本身对语法的检验比较严格,个人觉得是目前最好用的富文本过滤器。

htmlpurifier采用的是白名单机制,非常有效的杜绝了用户提交表单中的非法HTML标签,从而可以防止XSS攻击。

项目地址: http://htmlpurifier.org

非yii2框架的可以使用Composer安装

$ composer require "ezyang/htmlpurifier": "dev-master"

yii2框架已经内置了,所以可以直接使用

先上使用代码:

<?= \yii\helpers\HtmlPurifier::process($model->data->processedContent,function ($config) {
                    $dom =  $config->getHTMLDefinition(true);
                    $config->set('Attr.EnableID', true);
                    $dom->addAttribute("li", 'role', 'Text');
                    $dom->addAttribute("ul", 'role', 'Text');
                    $dom->addAttribute("a", 'data-toggle', 'Text');
                    $dom->addAttribute("a", 'role', 'Text');
                    $dom->addAttribute('a','aria-controls','Text');
            })
?>

使用过程中碰到了一些问题记录一下

我需要在内容里面加锚点,就是a标签用于边栏文章导航可以快速定位,但HtmlPurifier默认是屏蔽了name属性,文档也不是很详细的介绍,尝试了一些方法后发现可以用Attr.EnableID开启来解决

Attr.EnableID

 //<a name="anchor"></a>为了展示这行的name属性
$config->set('Attr.EnableID', true);

bootstrap里面有些使用了标签属性,比如role、data-taggle之类的属性,是没法直接注册进HtmlPurifier,需要通过动态的添加方法来注册

  $dom->addAttribute("li", 'role', 'Text');
  $dom->addAttribute("ul", 'role', 'Text');
  $dom->addAttribute("a", 'data-toggle', 'Text');
  $dom->addAttribute("a", 'role', 'Text');

 

582
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments