本文目錄一覽:
php怎麼接收json類型數據
PHP接收JSON格式的數據
在API服務中,目前流行採用json形式來交互。
給前端調用的介面輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微複雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS[‘HTTP_RAW_POST_DATA’] 或 file_get_contents(‘php://input’) 來獲取提交的數據
查看手冊,可以發現$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變數組成的數組,是自動全局變數。
$GLOBALS[‘HTTP_RAW_POST_DATA’] :總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 數據。此變數僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype=”multipart/form-data” 表單數據不可用。也就是說基本上$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS[‘HTTP_RAW_POST_DATA’]來接收,比如 text/xml 或者 soap 等等。
補充說明:PHP默認識別的數據類型是application/x-標準的數據類型。
PHP返回的JSON里含有未知字元使數據無法解析
既然你已經確定是文字編碼是UTF-8格式的話
1、檢查文件是否是UTF-8(不是裡邊的文本哦!切記)
有一個快速簡單的方法,用Windows自帶的記事本打開你的文件,然後另存為,如果編碼類型為ANSI的話,需要改為UTF-8,然後保存,如果直接就顯示的是UTF-8的話,那就跳過這步。
2、檢查文件是否包含BOM頭信息,找個工具檢查一下,如果有的話,必須要清除。
煩,PHP接收POST過來的JSON格式數據,內含html實體,無法解析
quot;屬於xml/html的字元轉義方式。
php用htmlspecialchars_decode還原。
echo json_decode(htmlspecialchars_decode($_POST[‘data’]));
沒有問題
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241980.html