-------------------------------------------------------------
注:这个文章是楼主一开始学习thinkphp的时候的心得,直接粗暴禁用标签过滤是不对的,正确的做法是,写入数据库的时候经过htmlspecialcharshans进行处理,取出渲染的时候,再通过,htmlspecialchars_decode,取出转义。
-------------------------------------------------------------
RT.
ThinkPHP的conf文件中的Convention.php有一个配置选项
'DEFAULT_FILTER' => 'htmlspecialchars', // 默认参数过滤方法 用于I函数...默认这个方法是开启的。也就是说,我们往数据库里面存储的数据中都会经过htmlspecialchars这个函数的转义处理。
我在我的项目中使用了Kindeditor富文本编辑器(或许你使用的是Ueditor\ckeditor),通过富文本编辑器编辑文章的内容然后存储到数据库中,再从数据库中读取显示到网页上来。
在这个过程中,我遇到一个问题,当我在insert方法直接显示我将提交到数据库里的文本数据时,能够正常解析成HTML页面,但是当我再从数据库里面读取HTML数据时,文章内容就变成了一整段HTML代码。dump输出我读取到的数组内容,可以很清楚的看到是已经转义的内容。
1.数据库中存储的内容以及读取出来的文章内容实例:
<p> 你们知道吗? </p&a

在ThinkPHP中使用富文本编辑器如Kindeditor时,存储到数据库的内容被自动转义,导致读取时显示为HTML源码。通过分析,发现是ThinkPHP的DEFAULT_FILTER配置自动对内容进行了转义。解决方法是在写入时使用htmlspecialchars_hans处理,读取时使用htmlspecialchars_decode解转义。禁用DEFAULT_FILTER不是最佳方案,建议按需手动调用过滤函数。
最低0.47元/天 解锁文章

969

被折叠的 条评论
为什么被折叠?



