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 5.0创建图形的巧妙方法
Oct 12 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
php实现aes加密类分享
Feb 16 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
PHP实现简易图形计算器
2020/08/28 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
javascript数组去掉重复
2011/05/12 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
vue接口请求加密实例
2020/08/11 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python实现ping指定IP的示例
2018/06/04 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
Python3.5运算符操作实例详解
2019/04/25 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Python 操作 MySQL数据库
2020/09/18 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
人力资源部培训专员岗位职责
2014/01/02 职场文书
个人融资协议书范本两则
2014/10/15 职场文书