手机
当前位置:查字典教程网 >编程开发 >php教程 >ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
摘要:ThinkPHP的conf文件中的Convention.php有一个配置选项'DEFAULT_FILTER'=>'htmlspecialch...

ThinkPHP的conf文件中的Convention.php有一个配置选项

'DEFAULT_FILTER' => 'htmlspecialchars', // 默认参数过滤方法 用于I函数...

默认这个方法是开启的。也就是说,我们往数据库里面存储的数据中都会经过htmlspecialchars这个函数的转义处理。

我在我的项目中使用了Kindeditor富文本编辑器(或许你使用的是Ueditorckeditor),通过富文本编辑器编辑文章的内容然后存储到数据库中,再从数据库中读取显示到网页上来。

在这个过程中,我遇到一个问题,当我在insert方法直接显示我将提交到数据库里的文本数据时,能够正常解析成HTML页面,但是当我再从数据库里面读取HTML数据时,文章内容就变成了一整段HTML代码。dump输出我读取到的数组内容,可以很清楚的看到是已经转义的内容。

1.数据库中存储的内容以及读取出来的文章内容实例:

<p> 你们知道吗? </p>

2.在html页面中解析出来的内容效果:

“<p> <span> </span><img src="http://www.jb51.net17joys/Public/kindeditor/attached/image/20140807/20140807110915_31727.jpg" alt="" width="800" height="600"> <span> </span></p>”

很明显可以看出,原来应该变成HTML标签的内容现在被解析成了文本里面的内容,而且在文本内容的最外面还加上了双引号。

正常的显示应该是没有双引号的才对。数据库读取出来的数据就是HTML页面的源代码,然后插入HTML页面之后,标签被解释,标签内的内容显示成页面。

通过上面的分析,可以确定,是ThinkPHP在内容存储的过程中自动对内容进行了转义处理,导致了数据库中存储的内容变成了转义后的内容,再次读出来的时候HTML会自动将原本属于标签的内容转义成为正文文本。

所以,果断到TP的conf目录下找convention.php配置文件,将DEFAULT_FILTER功能禁用掉,以后需要使用的时候再手动调用即可。

再次测试,这一次就解决了问题了。

【ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法】相关文章:

WINDOWS服务器安装多套PHP的另类解决方案

PHP ajax 异步执行不等待执行结果的处理方法

thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法

PHP 判断数组是否为空的5大方法

php格式化电话号码的方法

PHP file_get_contents函数读取远程数据超时的解决方法

PHP实现即时输出、实时输出内容方法

php实现比较两个字符串日期大小的方法

PHP和JAVA的XML-RPC中文问题解决办法

PHP使用flock实现文件加锁的方法

精品推荐
分类导航