ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
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功能禁用掉,以后需要使用的时候再手动调用即可。
再次测试,这一次就解决了问题了。
相关推荐
-
ThinkPHP表单自动提交验证实例教程
本文以实例讲述了ThinkPHP表单自动提交验证的实现过程,详细步骤如下所示: 一.模板部分: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITL
-
ThinkPHP中的create方法与自动令牌验证实例教程
本文实例形式展示了ThinkPHP中的create方法与自动令牌验证的实现方法,具体步骤如下: 一.数据表结构 user表结构如下: id username password 二.view模板部分 \aoli\Home\Tpl\default\User\create.html页面如下: <form action="__URL__/addit" method="post"> <input type="text" name=&quo
-
thinkPHP实现表单自动验证
昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对应的数据库表的模型类下建立$_validate属性就可以了. 1.我们找到Model基类,可以看到 protected $_validate = array(); // 自动验证定,它是数组类型的,下面在对应数据模型文件定义它: 2. 复制代码 代码如下: public functio
-
ThinkPHP自动完成中使用函数与回调方法实例
本文实例讲述了ThinkPHP自动完成中使用函数与回调方法.分享给大家供大家参考.具体方法如下: ThinkPHP 自动填充格式如下: 复制代码 代码如下: array(填充字段,填充内容[,填充条件][,附加规则]) 附加规则,可选,包括: string:字符串,表示填充内容为字符串(默认). function:使用函数,表示填充的内容是一个函数返回值. callback:使用方法,表示填充的内容是一个当前 Model 的方法返回值. field:字段,表示填充的内容是一个其他字段的值. Th
-
ThinkPHP提交表单时默认自动转义的解决方法
本文实例讲述了ThinkPHP提交表单时默认自动转义的解决方法.分享给大家供大家参考.具体方法如下: 一.问题: 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线. 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不
-
thinkPHP线上自动加载异常与修复方法实例分析
本文实例讲述了thinkPHP线上自动加载异常与修复方法.分享给大家供大家参考,具体如下: 项目遇到一个奇怪的问题,本地代码正常,服务器上却不正常. 经过测试,应该是自动加载出了问题,尝试了各种方法, 1.手动加载,发现好麻烦,没完没了. 2.自己写自动加载,写不出来,尴尬. 3.修改配置,使其支持自动加载,发现还是不行. 后来进行调试, 发现本地支持 import('@.ORG.OSS\OssClient'); import('@.ORG.OSS\Core\OssUtil'); 而服务器上,不
-
thinkPHP分组后模板无法加载问题解决方法
本文分析了thinkPHP分组后模板无法加载问题解决方法.分享给大家供大家参考,具体如下: 一个分组简要的目录结构如下图所示: 默认分组配置为Home.当访问localhost/server/时可以正常访问前台,localhost/server/home/Index/index也能正常访问. 但是,localhost/server/admin却不能加载tpl页面,但是能够访问到控制器(localhost/server/admin/Index/index能访问,display不出页面). 解决:
-
ThinkPHP自动验证失败的解决方法
复制代码 代码如下: /* * 登陆 */ public function Login(){ if($_POST['submit']){ $DB = D('Login');//自定义Model处理 //if里面就是ThinkPHP的自动验证了. if(!$DB->create()){ $this->redirect('Index/Login', '', 3, '错误信息: '.$DB->getError().'<br/>系统将于3秒后返回重新登陆...'); }else{ $
-
ThinkPHP中的三大自动简介
本文较为详细的讲述了ThinkPHP中的三大自动,是非常重要的应用,分享给大家供大家参考.具体如下: 一.自动验证 格式如下: array('验证字段','验证规则','错误提示','验证条件','附加规则','验证时间') 参数说明: 验证字段:需要验证表单字段名称 验证规则:必须要结合附加规则一起使用 错误提示:如果出现错误,抛出一个什么样的错误提示告知用户 验证条件:0.1.2 附加规则:1.regex使用正则验证 2.function使用函数验证 3.callback回调 4.confi
-
ThinkPHP 表单自动验证运用示例
使用TP 3.2框架 public function add_post(){ //验证规则 $rule=array( array('name','require','请输入姓名',1),//必须验证name ); $m=M('user'); //获取name,sex,contact数据到模型,并验证 if(!$m->field('name,sex,contact')->validate($rule)->create()) $this->error($m->getError()
-
如何让thinkphp在模型中自动完成session赋值小教程
相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比如自动验证.自动完成等,今天在开发中遇到自动完成中需要获取session值 然后自动赋值的功能,具体看代码: class ArticlelModel extends Model { protected $_auto = array ( array('addtime','time',1,'function'), array('username','getName',1,'callback') ); //这个函数获取s
-
ThinkPHP自动填充实现无限级分类的方法
本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值.现将完整实例分享给大家,供大家参考.具体实现步骤如下: 表aoli_cate如下图所示: 一.action部分: aoli/Home/Lib/Action/CataAction.class.php文件如下: <?php class CateAction extends Action{ function index(){ $cate=M('cate'); $list=$cate->fie
随机推荐
- Lua在windows下的安装及环境配置
- 利用css+原生js制作简单的钟表
- jQuery将表单序列化成一个Object对象的实例
- JavaScript 对象详细整理总结
- 详解iOS设计中的UIWindow使用
- Android中让按钮拥有返回键功能的方法及重写返回键功能
- mysql 5.7如何安装 mysql 5.7安装配置教程
- Shell脚本之无限循环的两种方法
- 全面解析SpringBoot自动配置的实现原理
- jQuery.clean使用方法及思路分析
- jQuery 局部div刷新和全局刷新方法总结
- javascript 随机展示头像实现代码
- 几步轻松解决打不开IE链接
- CentOS与Ubuntu哪个更适合做服务器系统
- Linux系统下使用U盘的方法
- C语言代码中调用C++代码的方法示例
- C# CheckedListBox控件的用法总结
- smarty section简介与用法分析
- Android RecyclerView线性布局详解(1)
- IE之死__原来与CSS有关