PHP处理Json字符串解码返回NULL的解决方法


Posted in PHP onSeptember 01, 2014

本文实例讲述了PHP处理Json字符串解码返回NULL的解决方法。分享给大家供大家参考之用。具体方法如下:

一般来说,php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array;若为false,返回object。如果返回NULL,说明报错,输出json_last_error(),得到的整数值对应错误提示。如下图所示:

PHP处理Json字符串解码返回NULL的解决方法

json_last_error()比较常见的是整数4, 是json字符串在json_decode之前已不完整,所以语法错误。

那么一定是客户端提交的个别字符影响了json的格式,可以使用JS进行过滤,可以解决一般问题,主要过滤回车,空格,html标签。

实现代码如下:

/*
* 过滤函数
*/
function htmlEncode(str) {
 str = str.replace(/\s+/ig, '');
 str = str.replace(/&/g, '');
 str = str.replace(/</g, '');
 str = str.replace(/>/g, '');
 str = str.replace(/(?:t| |v|r)*n/g, '<br />');
 str = str.replace(/t/g, '    ');
 str = str.replace(/x22/g, '"');
 str = str.replace(/x27/g, ''');
 str = str.replace(/"/g, "");
 return str;
}

以上情况针对的是,你必须提交json字符串数据到服务端处理,只能在客户端进行过滤。

其它的json_decode($str)返回NULL的一些原因:

1.$str只能UTF-8编码

2.元素最后不能有逗号(与php的array不同)

3.元素不能使用单引号

4.元素值中间不能有空格和\n,必须替换

如果大家遇到了上述情况,可以按照以上方法处理一下。

PHP 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
php xml文件操作实现代码(二)
Mar 20 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
PHP多线程类及用法实例
Dec 03 PHP
php实现插入排序
Mar 29 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 #PHP
重新认识php array_merge函数
Aug 31 #PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 #PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 #PHP
PHP实现数组递归转义的方法
Aug 28 #PHP
PHP之autoload运行机制实例分析
Aug 28 #PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 #PHP
You might like
PHP使用数组实现队列
2012/02/05 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
巡警年度自我鉴定
2014/02/21 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
公司授权委托书范本
2014/09/18 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
php实现自动生成验证码的实例讲解
2021/11/17 PHP
Vue的过滤器你真了解吗
2022/02/24 Vue.js