Heim > Backend-Entwicklung > PHP-Tutorial > php json_decode stripcslashes

php json_decode stripcslashes

WBOY
Freigeben: 2016-06-06 20:42:07
Original
1218 Leute haben es durchsucht

<code>echo $res=addslashes(json_encode(array('content'=>'中文')));
//{\"content\":\"\\u4e2d\\u6587\"}
echo stripcslashes($res);//{"content":"\u4e2d\u6587"}

直接echo stripcslashes( '{\"content\":\"\\u4e2d\\u6587\"}');//{"content":"u4e2du6587"}
\不见了???不能用json_decode()解码了
</code>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

<code>echo $res=addslashes(json_encode(array('content'=>'中文')));
//{\"content\":\"\\u4e2d\\u6587\"}
echo stripcslashes($res);//{"content":"\u4e2d\u6587"}

直接echo stripcslashes( '{\"content\":\"\\u4e2d\\u6587\"}');//{"content":"u4e2du6587"}
\不见了???不能用json_decode()解码了
</code>
Nach dem Login kopieren
Nach dem Login kopieren

JSON在编码的时候已经转义了,addslashes和stripcslashes都是多此一举。

//PHP版本5.4以上:
json_encode($data,JSON_UNESCAPED_UNICODE);

//PHP版本5.2以上才有json_encode/json_decode系列函数。
//PHP版本5.2-5.3,可以利用PHP的urlencode/urldecode的组合使用,可以达到类似的保留中文的效果。
//示例如下:代码里的MyJsonEncode和MyJsonDecode函数可以保留中文。

<code>//数组转换保留为中文的JSON字符串
function MyJsonEncode($data){
    return urldecode(json_encode(MyUrlEncode($data)));
    //需要PHP版本5.4以上:
    //return json_encode($data,JSON_UNESCAPED_UNICODE);
}
//保留中文的JSON字符串转换为数组
function MyJsonDecode($data){
    $data = urlencode($data);
    $data = str_replace("%7B",'{',$data);
    $data = str_replace("%7D",'}',$data);
    $data = str_replace("%5B",'[',$data);
    $data = str_replace("%5D",']',$data);
    $data = str_replace("%3A",':',$data);
    $data = str_replace("%2C",',',$data);
    $data = str_replace("%22",'"',$data);
    return MyUrlDecode(json_decode($data,true));
}
//自定义的URL编码
function MyUrlEncode($data) {
    //可对关联数组进行URL编码,并处理换行符  
    //内部递归调用
    //用于MyJsonEncode函数调用
    if(!is_array($data)){
        $data = str_replace("\r",'\r',$data);
        $data = str_replace("\n",'\n',$data);
        $data = urlencode($data);
    }
    else {
        foreach($data as $key=>$value) {
            $data[MyUrlEncode($key)] = MyUrlEncode($value);
            if((string)MyUrlEncode($key)!==(string)$key){
                unset($data[$key]);
            }
        }
    }
    return $data;
}
//自定义的URL解码
function MyUrlDecode($data) {
    //可对关联数组进行URL解码,并处理换行符  
    //内部递归调用
    //用于MyJsonDecode函数调用
    if(!is_array($data)){
        $data = urldecode($data);
        $data = str_replace('\r',"\r",$data);
        $data = str_replace('\n',"\n",$data);
    }
    else {
        foreach($data as $key=>$value) {
            $data[MyUrlDecode($key)] = MyUrlDecode($value);
            if((string)MyUrlDecode($key)!==(string)$key){
                unset($data[$key]);
            }
        }
    }
    return $data;
}
</code>
Nach dem Login kopieren

//以上代码来自MyPHP开源函数库。
//GitHub开源地址:https://github.com/MoonLord-LM/MyPHP
//我的Blog:http://www.moonlord.cn

字符串直接写入表示的是正常的转义. 话说encode完的不就可以直接decode么,为什么还要做这种多余的动作……

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage