国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php判斷json格式是否正確的方法

2020-03-22 18:51:10
字體:
來源:轉載
供稿:網友


本文主要和大家分享php判斷json格式是否正確的方法,主要以代碼的方式和大家分享,希望能幫助到大家。1、校驗json格式是否有誤:
function data($html' target='_blank'>value) {    $res = json_decode($value, true);        $error = json_last_error();        if (!empty($error)) {        echo "<pre>";        print_r($value);        echo "</pre>";    }    return $res;}

延伸:json_last_error可以判斷返回 JSON 編碼解碼時最后發生的錯誤。 錯誤如下:有對應的數字編碼,但是只要非空,就表示有錯誤,對于一般的json格式校驗來說,已經足夠了!
這里寫圖片描述

0 = JSON_ERROR_NONE No error has occurred

1 = JSON_ERROR_DEPTH The maximum stack depth has been exceeded

2 = JSON_ERROR_STATE_MISMATCH Invalid or malformed JSON

3 = JSON_ERROR_CTRL_CHAR Control character error, possibly incorrectly encoded

4 = JSON_ERROR_SYNTAX Syntax error

5 = JSON_ERROR_UTF8 Malformed UTF-8 characters, possibly incorrectly encoded PHP 5.3.3

人性化的輸出json錯誤!
<?php     if (!function_exists('json_last_error_msg')) {         function json_last_error_msg() {             static $ERRORS = array(                 JSON_ERROR_NONE => 'No error',                 JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',                 JSON_ERROR_STATE_MISMATCH => 'State mismatch (invalid or malformed JSON)',                 JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',                 JSON_ERROR_SYNTAX => 'Syntax error',                 JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded'             );             $error = json_last_error();             return isset($ERRORS[$error]) ? $ERRORS[$error] : 'Unknown error';         }     }
2、帶中文字的數組轉json方法一(推薦)加參數:JSON_UNESCAPED_UNICODE
$array = array('key' => 'value', 'test' => array('測試一下', 2, 3));echo "<pre>";print_r(json_encode($array, JSON_UNESCAPED_UNICODE));echo "</pre>";exit;

這里寫圖片描述

3、另一種方法將帶中文字的數組轉json方法:
//將漢字,特殊字符原樣變成json數據function ch_json_encode($data) {    $ret = ch_urlencode($data);    $ret = json_encode($ret);    return '/'' . addslashes(urldecode($ret)) . '/'';}//漢字,特殊字符變可讀懂的字符串主程序function ch_urlencode($data) {    if (is_array($data) || is_object($data)) {        foreach ($data as $k => $v) {            if (is_scalar($v)) {                if (is_array($data)) {                    $data[$k] = urlencode($v);                } else if (is_object($data)) {                    $data->$k = urlencode($v);                }            } else if (is_array($data)) {                $data[$k] = ch_urlencode($v); // 遞歸調用該函數            } else if (is_object($data)) {                $data->$k = ch_urlencode($v);            }        }    }    return $data;}

php5.2以后自帶json_decode函數,但是對json文本串的格式要求非常嚴格。

很可能使用該函數得到的返回值是NULL,沒有返回數組只有可能要么是編碼問題,要么就是json返回的數據又特殊字符別無其他原因,下面是解決方法:

可以使用使用json_last_error()函數獲取到的返回值來幫助我們判斷出問題的原因。

其中如果提示錯誤JSON_ERROR_SYNTAX(Syntax error),表示json串格式錯誤。

可以通過以下幾個方式排錯:

  1. json字符串必須以雙引號包含

$output = str_replace("'", '"', $output);
  1. json字符串必須是utf8編碼

$output = iconv('gbk', 'utf8', $output);

3.不能有多余的逗號 如:[1,2,],用正則替換掉

preg_replace('/,/s*([/]}])/m', '$1', $output)
4、不能有換行、制表符:這個非常坑,經常排除了所有的錯誤還是出不來,就是這個地方,多了個換行符啥的,尤其是在excel編輯之后再導入到數據庫,然后再用php取出的時候!
$jsonstr = '{"succ":true,"data":{"id":"31","keywords":"","description":"","jianjie":"       ","jianjie_short":"bb","nav":"ccc","deleted":"0","url":"http:////travel.sina.com.cn//beijing//"}}';//$ret=preg_replace("//t/", " ", $ret);  //$jsonstr = preg_replace("//n/", ' ', $jsonstr);$jsonstr = str_replace("/n", ' ', $jsonstr);//print_r($jsonstr);exit;//$jsonstr = str_replace ('/n','', $jsonstr);$jd = json_decode($jsonstr,true);$errorinfo = json_last_error();//print_r(JSON_ERROR_DEPTH);print_r($jd);

當對UTF-8編碼的文件進行操作時,如果要把讀取的內容當作文本內容來處理,最好先對BOM進行一些處理,這個問題在PHP6中得到了解決(可以設置文本/二進制讀取模式),有興趣的朋友可以自己查找PHP6的手冊。

相關推薦:

PHP如何判斷json格式是否正確

以上就是php判斷json格式是否正確的方法的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静乐县| 淄博市| 芜湖县| 临沂市| 承德县| 固阳县| 南汇区| 会东县| 柳江县| 武宁县| 隆昌县| 北票市| 万安县| 资中县| 湖口县| 大同市| 乌拉特中旗| 邯郸市| 耿马| 额济纳旗| 余江县| 米泉市| 电白县| 阜南县| 拜城县| 比如县| 彭州市| 合肥市| 镇康县| 法库县| 乐安县| 孝感市| 岗巴县| 芒康县| 安宁市| 长葛市| 神池县| 江都市| 峨眉山市| 托克托县| 固始县|