이번에 소개할 함수는 JSON 데이터가 정상적인지 체크하는 함수로 , 체크 방식은 JSON 디코드시 발생되는 에러 결과값을 이용하여 체크하도록 되어있다.
함수정의와 사용 방법은 아래와 같다.
isjson() 함수 |
function isjson($string){
json_decode($string);
switch (json_last_error()) {
case JSON_ERROR_NONE:
$error = ''; // JSON is valid // No error has occurred
break;
case JSON_ERROR_DEPTH:
$error = 'The maximum stack depth has been exceeded.';
break;
case JSON_ERROR_STATE_MISMATCH:
$error = 'Invalid or malformed JSON.';
break;
case JSON_ERROR_CTRL_CHAR:
$error = 'Control character error, possibly incorrectly encoded.';
break;
case JSON_ERROR_SYNTAX:
$error = 'Syntax error, malformed JSON.';
break;
// PHP >= 5.3.3
case JSON_ERROR_UTF8:
$error = 'Malformed UTF-8 characters, possibly incorrectly encoded.';
break;
// PHP >= 5.5.0
case JSON_ERROR_RECURSION:
$error = 'One or more recursive references in the value to be encoded.';
break;
// PHP >= 5.5.0
case JSON_ERROR_INF_OR_NAN:
$error = 'One or more NAN or INF values in the value to be encoded.';
break;
case JSON_ERROR_UNSUPPORTED_TYPE:
$error = 'A value of a type that cannot be encoded was given.';
break;
default:
$error = 'Unknown JSON error occured.';
break;
}
if($error !== ''){ return false; }
return true;
}
예제 |
$jsonstr1 = '{dkdk:ffmm,}';
$jsonstr2 = json_encode(array('rst'=>'success'));
$result1 = isjson($jsonstr1);
var_dump($result1); // return false;
$result2 = isjson($jsonstr2);
var_dump($result1); // return true;