优秀的编程知识分享平台

网站首页 > 技术文章 正文

php函数 json_encode注意点(php中json)

nanyue 2024-11-11 12:26:28 技术文章 1 ℃

在使用php编程的场景中,总有一些情况下需要将数组转为json字符串,就需要用到php自带的json_encode函数;

但是当数组中含有中文字符串时,转出来的结果却是以下结果(unicode字符串):

<?php
 $tmpArr = array(
 'name' => '长裤',
 'color' => 'blue',
 'size' => 'XL',
 'title' => '中年男装 长裤'
 );
 $tmpJson = json_encode($tmpArr);
 echo $tmpJson;

输出:{"name":"\u957f\u88e4","color":"blue","size":"XL","title":"\u4e2d\u5e74\u7537\u88c5 \u957f\u88e4"}

要想中文不被转为unicode字符串,只需要给json_encode函数中传入一个参数JSON_UNESCAPED_UNICODE即可,如下:

<?php
 $tmpArr = array(
 'name' => '长裤',
 'color' => 'blue',
 'size' => 'XL',
 'title' => '中年男装 长裤'
 );
 $tmpJson = json_encode($tmpArr,JSON_UNESCAPED_UNICODE);
 echo $tmpJson;

输出:{"name":"长裤","color":"blue","size":"XL","title":"中年男装 长裤"}

但是PHP版本<5.4.0中并不支持以上参数JSON_UNESCAPED_UNICODE,这个时候我们可以通过以下方式解决:

$tmpArr = array(
 'name' => '长裤',
 'color' => 'blue',
 'size' => 'XL',
 'title' => '中年男装 长裤'
 );

 $tmpJson = json_encode($tmpArr);
 $tmpJson = preg_replace_callback("#\\\u([0-9a-f]{4})#i",function($matchs){
 return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
 },$tmpJson);

 echo $tmpJson;

输出:{"name":"长裤","color":"blue","size":"XL","title":"中年男装 长裤"}

好了,今天的分享就到这里,如果喜欢我的内容,欢迎转发~~

下期见!

最近发表
标签列表