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 相关文章推荐
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
在PHP中使用模板的方法
May 24 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 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实现mysql数据库备份类
2008/03/20 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
详解vue配置后台接口方式
2019/03/29 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
写好自荐信的技巧
2013/11/08 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
环保倡议书500字
2014/05/15 职场文书
征兵宣传标语
2014/06/20 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
铁路安全反思材料
2014/12/24 职场文书
交通事故被告代理词
2015/05/23 职场文书
民主生活会主持词
2015/07/01 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS