PHP json中文unicode解码

来源:互联网 发布:java web classpath 编辑:程序博客网 时间:2024/05/18 03:20
最近更新PHP版本到PHP5.5.10 用以前的代码出现了点小问题
<?php$str = '{"method":"sendSms","mobile":"1343****201","timestamp":"2013-04-12 16:39:41","transSeq":"1365755981","version":"1.0","params":{"text":"\u5c0a\u656c\u7684\u7528\u6237\u60a8\u597d\uff0c\u60a8\u7684\u77ed\u4fe1\u9a8c\u8bc1\u7801\u4e3a\uff1a293088"}}返回结果{"message":{"text":"ok"},"method":"sendSms","mobile":"1343****201","sessionId":"?","status":"00","timestamp":"2013-04-12 16:39:38","transSeq":"1365755981"}';$st =  preg_replace("#\\\u([0-9a-f]{4})#ie",  "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $str);
出现这样的一个小问题
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in
最后查阅文档,PHP新版不推荐使用preg_replace(): e模式
推荐使用 preg_replace_callback
修改成这样就可以了。
$st =  preg_replace_callback("#\\\u([0-9a-f]{4})#i", function($matchs){ return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));}, $str);
出现在这种问题的原因,就是因为JSon中文解码的问题的,终于现在不用那么麻烦了,PHP新版本Json_encode函数加了好多常量参数
这样就不会能中文unicode编码了
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
更新日志
版本    说明
5.4.0    options 参数增加常量: JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES, 和JSON_UNESCAPED_UNICODE。
5.3.3    options 参数增加常量:JSON_NUMERIC_CHECK。
5.3.0    增加 options 参数.


0 0
原创粉丝点击