当前位置:首页 > PHP教程 > php函数 > 列表

php中json中文处理函数(中文显示与中文编码)

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-11 15:49:25 浏览: 评论:0 

php中json中文处理功能对于初学者来说是一个比较好用的函数,如果我们直接使用json处理函数来做你会发现中文会变成了null了,如果我们转换在uft8之后会显示的是中文的字符编码了,下面我整理两个工作中用到的函数,希望对各位有帮助.

例子,代码如下:

  1. function encodeConvert($str,$fromCode,$toCode
  2.  if(strtoupper($toCode) == strtoupper($fromCode)) return $str
  3.  if(is_string($str)){ 
  4.   if(function_exists('mb_convert_encoding')){ 
  5.    return mb_convert_encoding($str,$toCode,$fromCode); 
  6.   }  //开源软件:phpfensi.com 
  7.   else
  8.    return iconv($fromCode,$toCode,$str); 
  9.   } 
  10.  } 
  11.  elseif(is_array($str)){    
  12.   foreach($str as $k=>$v){     
  13.    $str[$k] = encodeConvert($v,$fromCode,$toCode); 
  14.   } 
  15.   return $str
  16.  } 
  17.  return $str

例子,代码如下:

  1. /**************************************************************  
  2.  *  
  3.  *  将数组转换为JSON字符串(兼容中文)  
  4.  *  @param  array   $array      要转换的数组  
  5.  *  @return string      转换得到的json字符串  
  6.  *  @access public  
  7.  *  
  8.  *************************************************************/ 
  9. function JSON($array) {  
  10.     arrayRecursive($array'urlencode', true);  
  11.     $json = json_encode($array);  
  12.     return urldecode($json);  
  13. }  
  14. /**************************************************************  
  15.  *  
  16.  *  使用特定function对数组中所有元素做处理  
  17.  *  @param  string  &$array     要处理的字符串  
  18.  *  @param  string  $function   要执行的函数  
  19.  *  @return boolean $apply_to_keys_also     是否也应用到key上  
  20.  *  @access public  
  21.  *  
  22.  *************************************************************/ 
  23. function arrayRecursive(&$array$function$apply_to_keys_also = false){  
  24.     static $recursive_counter = 0;  
  25.     if (++$recursive_counter > 1000) {  
  26.         die('possible deep recursion attack');  
  27.     }  
  28.     foreach ($array as $key => $value) {  
  29.         if (is_array($value)) {  
  30.             arrayRecursive($array[$key], $function$apply_to_keys_also);  
  31.         } else {  
  32.             $array[$key] = $function($value);  
  33.         }                                         
  34.         if ($apply_to_keys_also && is_string($key)) {  
  35.             $new_key = $function($key);  
  36.             if ($new_key != $key) {  
  37.                 $array[$new_key] = $array[$key];  
  38.                 unset($array[$key]);  
  39.             }  
  40.         }  
  41.     }  
  42.     $recursive_counter--;  

测试例子,代码如下:

  1. $arr = array (  
  2.   array (  
  3.       'catid' => '4',  
  4.       'catname' => 'php粉丝网网',  
  5.       'meta_title' => 'php粉丝网网2'  
  6.     ),  
  7.     array (  
  8.       'catid' => '55',  
  9.       'catname' => 'php教程',  
  10.       'meta_title' => 'http://www.phpfensi.com',  
  11.     )  
  12. );   
  13.                                                                             
  14. echo JSON($arr); 
  15.  
  16. echo  json_encode(encodeConvert($arr,'gb2312','utf-8'));/*  */ 
  17. 输出结果如下 
  18.  
  19. [{"catid":"4","catname":"php粉丝网","meta_title":"php粉丝网2"},{"catid":"55","catname":"php教程","meta_title":"http://www.phpfensi.com"}] 
  20. [{"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.phpfensi.com"}]

Tags: json中文处理 php中文函数

分享到: