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 相关文章推荐
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Mar 03 PHP
php 正则表达式小结
Aug 31 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
PHP下常用正则表达式整理
Oct 26 PHP
php基础学习之变量的使用
Jun 09 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
php删除左端与右端空格的方法
Nov 29 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
php基于协程实现异步的方法分析
Jul 17 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的explode和implode的使用说明
2011/07/17 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Python 多线程Threading初学教程
2017/08/22 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
通过实例解析Python return运行原理
2020/03/04 Python
伦敦一卡通:The London Pass
2018/11/30 全球购物
存储过程的优点有哪些
2012/09/27 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
主持词开场白
2014/03/17 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
营销学习心得体会
2014/09/12 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis