php中json中文处理功能对于初学者来说是一个比较好用的函数,如果我们直接使用json处理函数来做你会发现中文会变成了null了,如果我们转换在uft8之后会显示的是中文的字符编码了,下面我整理两个工作中用到的函数,希望对各位有帮助.
例子,代码如下:
- function encodeConvert($str,$fromCode,$toCode)
- {
- if(strtoupper($toCode) == strtoupper($fromCode)) return $str;
- if(is_string($str)){
- if(function_exists('mb_convert_encoding')){
- return mb_convert_encoding($str,$toCode,$fromCode);
- } //开源软件:Vevb.com
- else{
- return iconv($fromCode,$toCode,$str);
- }
- }
- elseif(is_array($str)){
- foreach($str as $k=>$v){
- $str[$k] = encodeConvert($v,$fromCode,$toCode);
- }
- return $str;
- }
- return $str;
- }
例子,代码如下:
- /**************************************************************
- *
- * 将数组转换为JSON字符串(兼容中文)
- * @param array $array 要转换的数组
- * @return string 转换得到的json字符串
- * @access public
- *
- *************************************************************/
- function JSON($array) {
- arrayRecursive($array, 'urlencode', true);
- $json = json_encode($array);
- return urldecode($json);
- }
- /**************************************************************
- *
- * 使用特定function对数组中所有元素做处理
- * @param string &$array 要处理的字符串
- * @param string $function 要执行的函数
- * @return boolean $apply_to_keys_also 是否也应用到key上
- * @access public
- *
- *************************************************************/
- function arrayRecursive(&$array, $function, $apply_to_keys_also = false){
- static $recursive_counter = 0;
- if (++$recursive_counter > 1000) {
- die('possible deep recursion attack');
- }
- foreach ($array as $key => $value) {
- if (is_array($value)) {
- arrayRecursive($array[$key], $function, $apply_to_keys_also);
- } else {
- $array[$key] = $function($value);
- }
- if ($apply_to_keys_also && is_string($key)) {
- $new_key = $function($key);
- if ($new_key != $key) {
- $array[$new_key] = $array[$key];
- unset($array[$key]);
- }
- }
- }
- $recursive_counter--;
- }
测试例子,代码如下:
- $arr = array (
- array (
- 'catid' => '4',
- 'catname' => 'php粉丝网网',
- 'meta_title' => 'php粉丝网网2'
- ),
- array (
- 'catid' => '55',
- 'catname' => 'php教程',
- 'meta_title' => 'http://www.Vevb.com',
- )
- );
- echo JSON($arr);
- echo json_encode(encodeConvert($arr,'gb2312','utf-8'));/* */
- 输出结果如下
- [{"catid":"4","catname":"php粉丝网","meta_title":"php粉丝网2"},{"catid":"55","catname":"php教程","meta_title":"http://www.Vevb.com"}]
- [{"catid":"4","catname":"\u4e00\u805a\u6559\u7a0b\u7f51","meta_title":"\u4e00\u805a\u6559\u7a0b\u7f512"},{"catid":"55","catname":"php\u6559\u7a0b","meta_title":"http:\/\/www.Vevb.com"}]
新闻热点
疑难解答