The example in this article describes the solution to the problem that json in versions below php5.4 does not support unescaped Chinese content. Share it with everyone for your reference. The specific analysis is as follows:
When writing the ERP interface, I encountered the JAVA side receiving this json_encoded content
I checked the PHP manual and found that Chinese characters must be escaped under 5.4, but the PHP version on our server is 5.3, so I used PHP to simulate a JSON method.
if ($var === true)
return 'true';
if ($var === false)
return 'false';
static $reps = array(
array("\", "/", "n", "t", "r", "b", "f", '"', ),
array('\\', '\/', '\n', '\t', '\r', '\b', '\f', '"', ),
);
if (is_scalar($var))
return '"' . str_replace($reps[0], $reps[1], (string) $var) . '"';
if (!is_array($var))
throw new Exception('JSON encoder error!');
$isMap = false;
$i = 0;
foreach (array_keys($var) as $k) {
If (!is_int($k) || $i++ != $k) {
$isMap = true;
break;
}
}
$s = array();
if ($isMap) {
foreach ($var as $k => $v)
$s[] = '"' . $k . '":' . call_user_func(__FUNCTION__, $v);
return '{' . implode(',', $s) . '}';
} else {
foreach ($var as $v)
$s[] = call_user_func(__FUNCTION__, $v);
return '[' . implode(',', $s) . ']';
}
}
}
When using it, just use it as a built-in function. json_encode_ex(array('Diaoyu Island'=>'China')); also supports multi-dimensional arrays.
I hope this article will be helpful to everyone’s PHP programming design.