打印输出:
[[90987682,陈好茹,管理],[309888729,张先生,管理],[56439871,jack,管理],[76398723,李洁,e]]
utf-8
arr是null
当然问这个问题之前,楼主也是在网上查了很久的资料例如 (php使用json_decode返回null):http://www.nginx.cn/337.html 提到的3种解决办法:
1. json字符串必须以双引号包含
$output = str_replace(', '', $output);
2. json字符串必须是utf8编码
$output = iconv('gbk', 'utf8', $output);
3.不能有多余的逗号 如:[1,2,]
用正则替换掉,preg_replace('/,\s*([\]}])/m', '$1', $output)
对于1,2,3对比打印的字符串格式应该是没有问题的,上面的编码也打印出来了是utf-8的,还真的不知道是咋回事!
另外楼主用的php版本php version 5.2.6应该是用不了json_last_error()函数的 参考:http://php.net/manual/zh/function.json-last-error.php
json_last_error — 返回最后发生的错误 (php 5 >= 5.3.0, php 7)
-------------------分割线:楼主直接接上面红色部分的json字符串复制到$member_info做json解析,而不是通过post参数获取----------------------
打印输出
[[90987682,陈好茹,管理],[309888729,张先生,管理],[56439871,jack,管理],[76398723,李洁,e]]
utf-8
名字:陈好茹
名字:张先生
名字:jack
名字:李洁
再不确定的问一下:以上应该说明json格式是没有问题的? 字符utf-8编码也是没有问题的?
回复讨论(解决方案) 看上去没有问题
你 echo base64_encode($_post['mypostdata']); 贴出结果,让我分析一下
看上去没有问题
你 echo base64_encode($_post['mypostdata']); 贴出结果,让我分析一下
一下是base64_encode数据,多谢了!
w1tcijkwotg3njgyxcisxclpmyjlpb3ojllciixciueuoeeqhlwixsxbxcizmdk4odg3mjlciixciuw8oowfioeun1wilfwi566h55cgxcjdlftciju2ndm5odcxxcisxcjqywnrxcisxclnrqhnkizcil0sw1winzyzotg3mjnciixciuadjua0gvwilfwizvwixv0 $s = base64_decode(w1tcijkwotg3njgyxcisxclpmyjlpb3ojllciixciueuoeeqhlwixsxbxcizmdk4odg3mjlciixciuw8oowfioeun1wilfwi566h55cgxcjdlftciju2ndm5odcxxcisxcjqywnrxcisxclnrqhnkizcil0sw1winzyzotg3mjnciixciuadjua0gvwilfwizvwixv0);echo $s;
[[\90987682\,\陈好茹\,\管理\],[\309888729\,\张先生\,\管理\],[\56439871\,\jack\,\管理\],[\76398723\,\李洁\,\e\]]
可以看到双引号被转义了,显然你的 magic_quotes_gpc 开关是打开的(到 php5.4 这个开关就无效了)
由于使用了自动转义,所以不是直接入库的话,需要去转义 if(get_magic_quotes_gpc()) { if(isset($_get)) $_get = unturn($_get); if(isset($_post)) $_post = unturn($_post);}//去转义function unturn($val) { if(is_array($val)) { $val = array_map('unturn', $val); }else { $val = stripslashes($val); } return $val;}
$s = base64_decode(w1tcijkwotg3njgyxcisxclpmyjlpb3ojllciixciueuoeeqhlwixsxbxcizmdk4odg3mjlciixciuw8oowfioeun1wilfwi566h55cgxcjdlftciju2ndm5odcxxcisxcjqywnrxcisxclnrqhnkizcil0sw1winzyzotg3mjnciixciuadjua0gvwilfwizvwixv0);$s = stripcslashes($s);print_r(json_decode($s, true));
array( [0] => array ( [0] => 90987682 [1] => 陈好茹 [2] => 管理 ) [1] => array ( [0] => 309888729 [1] => 张先生 [2] => 管理 ) [2] => array ( [0] => 56439871 [1] => jack [2] => 管理 ) [3] => array ( [0] => 76398723 [1] => 李洁 [2] => e ))
好吧,果然版主,思路清晰,问题解决直接了当,毫不拖泥带水,多谢了。 本来可以结贴了,不过本着能慧更多人的目的,请版主分享一下解决这类问题的心得呗!
学习了。
很好用,好理解
