'php'에 해당되는 글 5건

  1. 2014.02.14 PHP 5.2 이하 버전에서 JSON 사용하기

PHP 5.2 이하 버전에서 JSON 사용하기

오래전 만들어준 쇼핑몰에서 갑자기 제품 검색이 되지 않는 문제로 문의가 들어왔다.
이 쇼핑몰이 PHP단이나 JS단에서(많은 부분이 AJAX처리..) 이런저런 기능이 커스터마이징되서 많이 들어가 있었는데 그 중하나가 상품목록을 AJAX롤 보여주는 기능이었고 검색 후 목록이 나오지 않는 문제가 발행한것이었다..
작업을 위해 rsync로 본인의 작업서버로 가져오려 하려했지만 RSA값이 틀리다고 나오는것으로 서버가 바뀌었다는걸 직감했는데 아파치 PHP버전이 무려 4.4.9!!!! 왜 낮은 버전으로 내렸을까?..   이유는 모르겠고 아무튼 이리저리 확인해보니 JSON인코딩이 잘 안되는 문제였다. -솔루션에서 제공하는 함수로 해도 마찮가지-
이리저리 뒤져보고하다가 아래와 같은 코드로 해결했기에 소개한다.
  1. //인코드함수  
  2. function json_encode2($data) {  
  3.  switch (gettype($data)) {  
  4.   case 'boolean':  
  5.    return $data?'true':'false';  
  6.   case 'integer':  
  7.   case 'double':  
  8.    return $data;  
  9.   case 'string':  
  10.    return '"'.strtr($dataarray('\\'=>'\\\\','"'=>'\\"')).'"';  
  11.   case 'array':  
  12.    $rel = false; // relative array?  
  13.    $key = array_keys($data);  
  14.    foreach ($key as $v) {  
  15.     if (!is_int($v)) {  
  16.      $rel = true;  
  17.      break;  
  18.     }  
  19.    }  
  20.   
  21.    $arr = array();  
  22.    foreach ($data as $k=>$v) {  
  23.     $arr[] = ($rel?'"'.strtr($karray('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v);  
  24.    }  
  25.   
  26.    return $rel?'{'.join(','$arr).'}':'['.join(','$arr).']';  
  27.   default:  
  28.    return '""';  
  29.  }  
  30. }  
  31.   
  32. $tmpJson = json_encode2($arrayData); //JSON 인코딩  
  33. $tmpJson = nl2br($tmpJson); //[ br ] 추가  
  34. $tmpJson = preg_replace('/\r\n|\r|\n/','',$tmpJson); //개행 삽입문자 제거.. JSON코드에 개행문자가 있으면 JS가 해석하지 못하는 경우가 있음  


함수의 원 출처는 불명..

Posted by TheBits