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递归列出所有文件和目录的代码
Sep 10 PHP
Session保存到数据库的php类分享
Oct 24 PHP
thinkphp实现数组分页示例
Apr 13 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
Web程序工作原理详解
Dec 25 PHP
php生成唯一的订单函数分享
Feb 02 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
PHP自定义错误用法示例
Sep 28 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 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中Session和Cookie是如何操作的
2015/10/10 PHP
php中数组最简单的使用方法
2020/12/27 PHP
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
详解JavaScript树结构
2017/01/09 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
python中import学习备忘笔记
2017/01/24 Python
python 网络编程详解及简单实例
2017/04/25 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
如何基于python生成list的所有的子集
2019/11/11 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
必须要使用游标的SQL语句有那些
2012/05/07 面试题
毕业自我评价范文
2013/11/17 职场文书
小学数学教学反思
2014/02/02 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
JavaScript实现两个数组的交集
2022/03/25 Javascript