PHP自定义json_encode函数
PHP #json_encode #函数2012-10-26 09:43
大家都知道,json_encode函数是对变量进行 JSON 编码,PHP版本需要5.2.0以上才支持。在实际应用中,当有中文字符时,当直接使用 json_encode() 函数会使汉字编码成Unicode码。所以有了这个适用性比较广的函数 yige_json_encode() 来解决这个问题。
<?php
/**
* 对变量进行 JSON 编码
*
* @param mix $a 待编码的变量
* @return string 返回一个以 JSON 形式表示的字符串
*
* @link http://yige.org/php/
*/
function yige_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)) {
// Always use "." for floats.
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', '\"'));
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[] = yige_json_encode($v);
return '['.join(',', $result).']';
} else {
foreach($a as $k => $v) $result[] = yige_json_encode($k).':'.yige_json_encode($v);
return '{'.join(',', $result).'}';
}
}
?>相关文章
- PHP过滤HTML标签的函数 2012/10/26
- PHP实现discuz安装进度显示 2012/10/23
- PHP分页类 2012/10/23
- php关联数组快速排序 2012/10/21
- php获取数组中重复数据的函数 2012/10/20
- PHP+MYSQL身份验证的方法 2012/10/20
- PHP找不到php_curl.dll的解决方法 2012/10/20
- PHP注入:谈MySql的SQL注入 2012/10/12
- php注入基本步骤 2012/10/11
- 使用php mongodb扩展时需要注意的地方 2012/09/13