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 相关文章推荐
图书管理程序(二)
Oct 09 PHP
用文本文件制作留言板提示(上)
Oct 09 PHP
php xml实例 留言本
Mar 20 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
支持中文的php加密解密类代码
Nov 27 PHP
PHP中数组的三种排序方法分享
May 07 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 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入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
jQuery 技巧小结
2010/04/02 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
javascript数组去重小结
2016/03/07 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
vue+eslint+vscode配置教程
2019/08/09 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
Vue实现省市区三级联动
2020/12/27 Vue.js
python实现简单温度转换的方法
2015/03/13 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
巴黎一票通:The Paris Pass
2018/02/10 全球购物
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
中职应届生会计求职信
2013/10/23 职场文书
实习推荐信
2014/05/10 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
golang中的并发和并行
2021/05/08 Golang
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android