PHP json_decode中文转义的问题
2015-11-18 14:38
519 查看
默认情况下PHP的 json_decode 方法会把特殊字符进行转义,还会把中文转为Unicode编码形式。在有些情况下不希望进行这种转义。
对于PHP5.4+版本,json_decode函数第二个参数,可以用来限制转义范围。要限制中文,使用JSON_UNESCAPED_UNICODE参数。
对于PHP5.3及以前版本,可以用如下方式转回中文:
$originstr = '{"name":"张三"}';
$jsonobject = json_decode($originstr);
// badstr: {"name":"\u5f20\u4e09"}
$badstr = json_encode($jsonobject);
// goodstr: {"name":"张三"}
$goodstr = preg_replace_callback("#\\\u([0-9a-f]{4})#i", function($matches){
return iconv('UCS-2', 'UTF-8', pack('H4', $matches[1]));
}, $badstr);
本文参考了http://blog.aizhet.com/web/1159.html,在其基础上做了修改。
对于PHP5.4+版本,json_decode函数第二个参数,可以用来限制转义范围。要限制中文,使用JSON_UNESCAPED_UNICODE参数。
json_encode($a, JSON_UNESCAPED_UNICODE);
对于PHP5.3及以前版本,可以用如下方式转回中文:
$originstr = '{"name":"张三"}';
$jsonobject = json_decode($originstr);
// badstr: {"name":"\u5f20\u4e09"}
$badstr = json_encode($jsonobject);
// goodstr: {"name":"张三"}
$goodstr = preg_replace_callback("#\\\u([0-9a-f]{4})#i", function($matches){
return iconv('UCS-2', 'UTF-8', pack('H4', $matches[1]));
}, $badstr);
本文参考了http://blog.aizhet.com/web/1159.html,在其基础上做了修改。
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- XML 与 JSON 优劣对比
- Php Installing An Expansion
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- vbs 解析json jsonp的方法