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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 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
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
js form action动态修改方法
2008/11/04 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
express 项目分层实践详解
2018/12/10 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python实现k-means算法
2018/02/23 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
详解python中的hashlib模块的使用
2019/04/22 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
AJAX的全称是什么
2012/11/06 面试题
应聘医学检验人员自荐信
2013/09/27 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
frg-100简单操作(设置)说明
2022/04/05 无线电
Docker下安装Oracle19c
2022/04/13 Servers