<?php
$rm = '5e
{"return":"error","errorcode":400,"errorinfo":"\u7528\u6237\u540d\u5df2\u88ab\u6ce8\u518c"}
0'; //注意这里面有2个换行符,在5e后面和0前面
$a_rm = explode("\r\n", $rm);
$a_rm1 = $a_rm[1];
echo $a_rm1;
echo "<pre>";var_dump(json_decode($a_rm1, true));
?>结果如下:
{"return":"error","errorcode":400,"errorinfo":"\u7528\u6237\u540d\u5df2\u88ab\u6ce8\u518c"}NULL
这样不行,,下面的方法可以。为什么呢?
$aa = '{"return":"error","errorcode":400,"errorinfo":"\u7528\u6237\u540d\u5df2\u88ab\u6ce8\u518c"}';
var_dump(json_decode($aa))
难道有什么隐式符号?
echo $a_rm1; 后查看原文件,就可看到
(
[0] => 5e
[1] => 锘縶"return":"error","errorcode":400,"errorinfo":"\u7528\u6237\u540d\
u5df2\u88ab\u6ce8\u518c"}
[2] => 0
)
<pre>NULL
本来以为是“\r\n”的问题,把程序改成以下样子:
$rm = '5e|{"return":"error","errorcode":400,"errorinfo":"\u7528\u6237\u540d\u5df2\u88ab\u6ce8\u518c"}|0';
$a_rm = explode('|', $rm);
$a_rm1 = $a_rm[1];
print_r($a_rm);
echo "<pre>";var_dump(json_decode($a_rm1, true));
结果是:
Array
(
[0] => 5e锘
[1] => {"return":"error","errorcode":400,"errorinfo":"\u7528\u6237\u540d\u5d
f2\u88ab\u6ce8\u518c"}
[2] => 0
)
<pre>array(3) {
["return"]=>
string(5) "error"
["errorcode"]=>
int(400)
["errorinfo"]=>
string(21) "鐢ㄦ埛鍚嶅凡琚敞鍐?
}还是出现一个“锘” 郁闷!