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中文件上传的安全问题
Oct 09 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
php匹配字符中链接地址的方法
Dec 22 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 PHP
PHP实现常用排序算法的方法
Feb 05 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截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Python高级特性切片(Slice)操作详解
2018/09/27 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python属于软件吗
2020/06/18 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
用python实现学生管理系统
2020/07/24 Python
animation和transition的区别
2020/10/12 HTML / CSS
恶搞卫生巾广告词
2014/03/18 职场文书
英语教师自荐信
2014/05/26 职场文书
公证委托书
2014/08/01 职场文书
给老婆的道歉信
2015/01/20 职场文书
公司回复函格式
2015/07/14 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
创业计划书之家教托管
2019/09/25 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Redis特殊数据类型bitmap位图
2022/06/01 Redis