php json_decode stripcslashes

來源:互聯網
上載者:User
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()解碼了

回複內容:

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()解碼了

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函數可以保留中文。

//數群組轉換保留為中文的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;}

//以上代碼來自MyPHP開源函數庫。
//GitHub開源地址:https://github.com/MoonLord-LM/MyPHP
//我的Blog:http://www.moonlord.cn

字串直接寫入表示的是正常的轉義. 話說encode完的不就可以直接decode麼,為什麼還要做這種多餘的動作……

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.