테스트 사이트 - 개발 중인 베타 버전입니다

서버의 php버전이 낮아서 json_encode() 함수가 안될때 사용하는 함수

· 12년 전 · 2289 · 2

//json 인코딩 함수
function json_encode2($data) {
 switch (gettype($data)) {
  case 'boolean':
   return $data?'true':'false';
  case 'integer':
  case 'double':
   return $data;
  case 'string':
   return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"';
  case 'array':
   $rel = false; // relative array?
   $key = array_keys($data);
   foreach ($key as $v) {
    if (!is_int($v)) {
     $rel = true;
     break;
    }
   }
  
   $arr = array();
   foreach ($data as $k=>$v) {
    $arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v);
   }
 
   return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']';
  default:
   return '""';
 }
}

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
if(array_key_exists('HTTP_ACCESS_CONTROL_REQUEST_HEADERS', $_SERVER)) {
    header('Access-Control-Allow-Headers: '
           . $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
} else {
    header('Access-Control-Allow-Headers: *');
}
 
if("OPTIONS" == $_SERVER['REQUEST_METHOD']) {
    exit(0);
}

//데이터 예시
$result = 쿼리
while($row = mysql_fetch_array($result)){
 $result_array[] = $row;
}

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$result_array=json_encode2($result_array);
print $result_array;

제가 관리하는 사이트 서버가 오래되어서 php 4버전이다 보니
json 함수가 사용이 안되어서 찾은 소스 입니다.

참고 문자 캐릭터형을 정확하게 사용하셔야 합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

오 찾았던 자료네요 ㅠㅠ 감사합니다
몰용 ㅎㅎ^^

게시글 목록

번호 제목
5722
31534
5717
19190
19181
19177
19173
19171
27353
19169
24530
27350
19161
19159
19156
19154
19152
19150
19147
19145
19143
19141
30830
19135
19129
19124
19118
19115
19111
19108
19104
19101
19098
19094
27342
19093
26548
19090
19088
19086
24524
31526
26539
32021
32015
5705
26533
24510
26524
24507
24506
19082
24498
5702
27337
32011
19080
19075
19073
19072
27330
27328
32010
32005
32001
19071
19063
31998
31994
5676
27327
31989
5671
5666
19056
31988
31987
31981
26515
30823
19050
19047
19039
31969
5649
27323
31963
19027
19020
19017
19014
19009
19005
31949
18998
18994
18988
18982
31941
31934