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