ajax나 외부 자료 연동등을 위해 json 규격을 활용해야 할때가 많습니다.
그때 json_encode가 지원되지 않는 서버일 경우가 있습니다.
아래와 같이 json_encode 함수를 직접 정의하여 활용해 보십시오.
function json_encode($a=false){
if(is_null($a)) return 'null';
if($a === false) return 'false';
if($a === true) return 'true';
if(is_scalar($a)){
if(is_float($a)) return floatval(str_replace(",", ".", strval($a)));
if(is_string($a)){
static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
} else return $a;
}
$isList = true;
for($i=0, reset($a); $i<count($a); $i++, next($a)){
if(key($a) !== $i){
$isList = false;
break;
}
}
$result = array();
if($isList){
foreach($a as $v) $result[] = json_encode($v);
return '[' . join(',', $result) . ']';
} else{
foreach($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v);
return '{' . join(',', $result) . '}';
}
}
공용 모듈 등에 쓰기 위하여 서버의 지원여부에 상관없이 쓰고자 하신다면, 아래와 같이 지원여부 확인을 위한 코드를 넣으시면 됩니다.
if(!function_exists("json_encode")){
// 여기에 위의 소스를 넣으세요.
}
'프로그래밍' 카테고리의 다른 글
[javascript] 장치의 웹페이지 출력 해상도 확인하기 (스마트폰 등) (0) | 2013.04.17 |
---|---|
[cocos2d-x] 안드로이드 Back 버튼 및 Menu 버튼 구현 (0) | 2013.03.28 |
[php] Fatal error: Allowed memory size 에러 발생시 대처 방법 (0) | 2013.03.25 |
[php] user-agent로 스마트폰 인식 및 처리 (0) | 2013.03.19 |
[자바스크립트] 쿠키 관련 함수 ( setCookie, getCookie ) (0) | 2013.03.19 |