php的json_encode不转义中文的完美解决办法

作者:LuckyMoke 时间:2016-11-08

问题所在

很多接口在传输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。

Tips

GitHubLuckyMoke

Weibokeailvyou

QQ839488083

米拓交流群

模板有不完善的地方欢迎指正!

1511438794807394.jpg