ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法


Posted in PHP onAugust 08, 2014

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功能禁用掉,以后需要使用的时候再手动调用即可。

再次测试,这一次就解决了问题了。

PHP 相关文章推荐
PHP脚本的10个技巧(1)
Oct 09 PHP
php smarty的预保留变量总结
Dec 04 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 PHP
Paypal实现循环扣款(订阅)功能
Mar 23 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 #PHP
getJSON跨域SyntaxError问题分析
Aug 07 #PHP
PHP+FastCGI+Nginx配置PHP运行环境
Aug 07 #PHP
PHP生成数组再传给js的方法
Aug 07 #PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 #PHP
PHP编程中的常见漏洞和代码实例
Aug 06 #PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 #PHP
You might like
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
列表内容的选择
2006/06/30 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
js自定义事件代码说明
2011/01/31 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
Python变量类型知识点总结
2019/02/18 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
计算机本科生自荐信
2013/10/15 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
2014年团总支工作总结
2014/11/21 职场文书
学生会辞职信
2015/03/02 职场文书
台风停课通知
2015/04/24 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis