问题所在
很多接口在传输json数据时,都要求不对中文进行转义,在php5.4及更高版本的php有<?php
json_encode($array, JSON_UNESCAPED_UNICODE);
?>
可以直接获取没有转义中文的json,但是低于php5.4的版本JSON_UNESCAPED_UNICODE参数就没有效果了
解决方法<?php
function json_encode_ex($array) {
if (version_compare(PHP_VERSION,'5.4.0','
$str = json_encode($array);
$str = preg_replace_callback (
"#\\\u([0-9a-f]{4})#i",
function($matchs) {
return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
},
$str
);
return $str;
} else {
return json_encode($array, JSON_UNESCAPED_UNICODE);
}
}
//数组
$array = array (
'name' => '张三',
'age' => '18'
);
$json = json_encode_ex($array);
echo $json;
//echo输出的结果为 {"name":"张三","age":"18"}
?>
直接用此方法对数组进行json化操作,可以完美生成没有转义中文的json。