PHP json中文unicode解码

最近更新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 参数.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值