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