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生成带有雪花背景的验证码
Oct 09 PHP
改进的IP计数器
Oct 09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
简单的php购物车代码
2020/06/05 PHP
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
js实现分割上传大文件
2016/03/09 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
Python 递归函数详解及实例
2016/12/27 Python
Python类的继承用法示例
2019/01/31 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
python 实现单例模式的5种方法
2020/09/23 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
护理工作感言
2014/01/16 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
商场消防安全责任书
2014/07/29 职场文书
手机销售员岗位职责
2015/04/11 职场文书
单位工作证明范本
2015/06/15 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
2016年清明节寄语
2015/12/04 职场文书