PHP中用json_decode()无法解析有换行符的字符串

在做主站wap部分数据转移到子站prod.thinkful.cn时,出现了一些以json格式存储的数据无法正常解析的情况,所以研究了一下,PHP中使用json_decode()函数解析带有换行符的字符串时,会有解析失败返回NULL的情况,后来摸索着解决了问题,用函数封装了json的加、解方式(将json编码中文的函数也写在里面了):

// Chinese json
function enjson($code){
    $code = json_encode(urlencodeAry($code));
    return urldecode($code);
}
function urlencodeAry($data){
    if(is_array($data)){
        foreach($data as $key=>$val){
            $data[$key] = urlencodeAry($val);
        }
        return $data;
    }
    else{
        return urlencode($data);
    }
}
// Json decode
function dejson($str){
    $str = str_replace("\\", '\\\\', $str);
    $str = str_replace("\r\n", '\n', $str);
    return json_decode($str, 1);
}

后面只需要调用enjson()、dejson()即可,比较方便。

你可能感兴趣的:(PHP中用json_decode()无法解析有换行符的字符串)