이 기사의 예에서는 php5.4 이하 버전의 json이 이스케이프되지 않은 중국어 콘텐츠를 지원하지 않는 문제에 대한 솔루션을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
ERP 인터페이스를 작성할 때 이 json_encoded 콘텐츠를 수신하는 JAVA 측을 만났습니다
PHP 매뉴얼을 확인해보니 5.4 이하에서는 한자를 이스케이프 처리해야 한다고 나와 있는데, 저희 서버의 PHP 버전이 5.3이기 때문에 PHP를 사용하여 JSON 방식을 시뮬레이션했습니다.
if ($var === true)
'true'를 반환합니다.
if ($var === false)
'false'를 반환합니다.
정적 $reps = 배열(
배열("\", "/", "n", "t", "r", "b", "f", '"', ),
배열('\\', '\/', '\n', '\t', '\r', '\b', '\f', '"', ),
);
if (is_scalar($var))
return '"' . str_replace($reps[0], $reps[1], (string) $var) . '"';
if (!is_array($var))
새로운 예외 발생('JSON 인코더 오류!');
$isMap = 거짓;
$i = 0;
foreach (array_keys($var)를 $k로) {
If (!is_int($k) || $i != $k) {
$isMap = true;
휴식;
}
}
$s = 배열();
if ($isMap) {
foreach($var는 $k => $v)
$s[] = '"' . $k . '":' . call_user_func(__FUNCTION__, $v);
'{' implode(',', $s) '}'를 반환합니다.
} else {
foreach($var를 $v로)
$s[] = call_user_func(__FUNCTION__, $v);
'[' . implode(',', $s) ']';를 반환합니다.
}
}
}
사용시에는 내장된 기능으로 직접 사용하시면 됩니다. json_encode_ex(array('Diaoyu Island'=>'China')); 또한 다차원 배열을 지원합니다.
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.