Web Development/PHP
[PHP] - JsonEncoder 함수
곰시기
2021. 2. 16. 15:55
function fncJsonEnc( $data ) {
/*
* $data : 사용자로 부터 받아오는 변수
* $get_type : $data type 확인
* $key, $k : 배열의 key
* $val, $v : 배열의 value
* $rtn : 반환 값
* $flag : 성공 실패 여부
*/
$get_type = "";
$key = "";
$val = "";
$flag = false;
$rtn = "";
$get_type = strtoupper( gettype( $data ) );
switch( $get_type ) {
case "BOOLEAN" :
return $data ? "true" : "false";
break;
case "INTEGER" :
case "DOUBLE" :
return $data;
break;
case "STRING" :
$data = preg_replace( "/(\n|\r|\n\r|\r\n|\t|\s){2,}/", " ", $data );
return '"'.strtr( $data, array( '\\' => '\\\\', '"' => '\\"' ) ).'"';
break;
case "ARRAY" :
$flag = false;
$key = array_keys( $data );
foreach( $key as $val ) {
if( !is_int( $val ) ) {
$flag = true;
break;
}
}
$arr = array();
foreach( $data as $k => $v ) {
$arr[] = ( $flag ? '"'.strtr( $k, array( '\\' => '\\\\', '"' => '\\"' ) ).'":':'').fncJsonEnc( $v );
}
return $flag ? '{'.join( ',', $arr ).'}' : '['.join( ',', $arr ).']';
break;
default :
return '""';
break;
}
}
출처 - https://taegon.kim/archives/944
** \n이 포함된 문자열에 대해 오류가 생겨 한줄을 추가 함