這篇文章給大家介紹的內容是關于PHP中json_encode的使用方法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
假設有這么一個URL
$url = https://www.baidu.com?key=你好 $data = [ url = $url];echo json_encode($data);
得到這樣的輸出
{ url : https:////www.baidu.com?key=/u4f60/u597d }
首先發現中文經過encode之后變成了16進制,這不是亂碼,只是單純現實方法變了,因為只需要直接通過反序列化就能得到原結果,如下:
//代碼$jsonStr = { url : https://// $data = json_decode($jsonStr);print_r($data);//輸出stdClass Object [url] = https://www.baidu.com?key=你好)
可見這不是亂碼,那么接下來說一說正題,雖然不是亂碼,但是看著16進制總是影響閱讀
可以在json_encode加一個參數
//代碼$url = https://www.baidu.com?key=你好 $data = [ url = $url];echo json_encode($data, JSON_UNESCAPED_UNICODE);{ url : https:////www.baidu.com?key=你好 }
發現中文可以正常顯示了,但是還有一個問題就是反斜杠被自動加了轉義字符/
看著也挺難受的,有沒有方法可以把轉義符去掉
//代碼$url = $data = [ url = $url];echo json_encode($data, JSON_UNESCAPED_SLASHES);{ url : https://www.baidu.com?key=/u4f60/u597d }
現在轉義符去掉了,但是中文又變成16進制了,我想既去掉轉義符,又正常顯示中文怎么辦
受到*nix-like權限管理的啟發,發現可以用異或運算
//代碼$url = $data = [ url = $url];echo json_encode($data, JSON_UNESCAPED_UNICODE ^ JSON_UNESCAPED_SLASHES);{ url : https://www.baidu.com?key=你好 }
完事。
另外補充一下,
因為JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES這幾個值的特殊性,因為都是通過1 n (n為一個整數)得到的,所以不僅可以用異或運算,也可以直接使用加法
//該等式為true((1 1) ^ (1 2)) === ((1 1) + (1 2))
相關文章推薦:
PHP中命名空間這部分內容的詳解
php如何使用curl接收POST地址即創建一個接口的方法
以上就是PHP中json_encode的使用方法介紹的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答