【ThinkPHP学习】ThinkPHP自动转义存储富文本编辑器内容导致读取出错
来源:互联网 发布:ubuntu uget chrome 编辑:程序博客网 时间:2024/06/03 15:01
-------------------------------------------------------------
注:这个文章是楼主一开始学习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>2.在html页面中解析出来的内容效果:
“ <p><span style="white-space:pre"></span><img src="/17joys/Public/kindeditor/attached/image/20140807/20140807110915_31727.jpg" alt="" width="800" height="600"><span style="white-space:pre"></span></p>”很明显可以看出,原来应该变成HTML标签的内容现在被解析成了文本里面的内容,而且在文本内容的最外面还加上了双引号。
正常的显示应该是没有双引号的才对。数据库读取出来的数据就是HTML页面的源代码,然后插入HTML页面之后,标签被解释,标签内的内容显示成页面。
通过上面的分析,可以确定,是ThinkPHP在内容存储的过程中自动对内容进行了转义处理,导致了数据库中存储的内容变成了转义后的内容,再次读出来的时候HTML会自动将原本属于标签的内容转义成为正文文本。
所以,果断到TP的conf目录下找convention.php配置文件,将DEFAULT_FILTER功能禁用掉,以后需要使用的时候再手动调用即可。
再次测试,这一次就解决了问题了。
- 【ThinkPHP学习】ThinkPHP自动转义存储富文本编辑器内容导致读取出错
- [php] UEditor富文本编辑器(thinkphp)
- ThinkPHP中使用富文本编辑器
- ThinkPHP示例:Ueditor富文本编辑器
- Thinkphp下嵌套UEditor富文本WEB编辑器
- 【php】ThinkPHP搭建百度Ueditor富文本编辑器
- Thinkphp下嵌套UEditor富文本WEB编辑器
- thinkphp 富文本截取字符串
- ThinkPHP整合Html编辑器时出现自动转义的问题
- Thinkphp快速载入文本编辑器
- ThinkPHP的使用(五)富文本编辑器的使用以及防xss攻击
- 富文本编辑器内容替换
- nginx不支持pathinfo 导致thinkphp出错解决办法
- nginx不支持pathinfo 导致thinkphp出错解决办法
- 数据库设计问题1-之富文本内容存储到mysql后的读取问题
- thinkphp 分页编码出错 导致之后分页sql查询乱码
- PHP学习---如何把富文本编辑器里面的内容生成html 传回给android客户端
- thinkphp学习
- chrome浏览器的一些常用的前端开发快捷键
- firefox的缓存目录位置、清除、修改
- WaitForSingleObject 的问题
- 不能包含中文的正则表达式
- 使用JUC并发工具包的Lock和Condition,实现生产者和消费者问题中的有界缓存
- 【ThinkPHP学习】ThinkPHP自动转义存储富文本编辑器内容导致读取出错
- 从头到尾彻底理解KMP
- <% if (Request["action"].ToString() != "add")
- android代码混淆
- 1002. A+B for Polynomials (25)
- Vesions ignore & ld: library not found for -l...
- Bone Collector
- Linux操作系统-Ubuntu-复制删除命令
- 控制触发器的递归