| 
 | 
	
 
 
这段代码是ThinkPHP框架中的,感觉很常用,所以单独拎出来,大家共同学习一下。 
 
function auto_charset($fContents,$from='',$to='') 
{ 
 if( strtoupper($from) === strtoupper($to) || empty($fContents) || (is_scalar($fContents) && !is_string($fContents)) ){ 
 //如果编码相同或者非字符串标量则不转换 
 return $fContents; 
 } 
 $from = strtoupper($from)=='UTF8'? 'utf-8':$from; 
 $to = strtoupper($to)=='UTF8'? 'utf-8':$to; 
 if(is_string($fContents) ) { 
 if(function_exists('mb_convert_encoding')){ 
 return mb_convert_encoding ($fContents, $to, $from); 
 }elseif(function_exists('iconv')){ 
 return iconv($from,$to,$fContents); 
 }else{ 
 exit('转换失败'); 
 return $fContents; 
 } 
 } 
 elseif(is_array($fContents)){ 
 foreach ( $fContents as $key => $val ) { 
 $_key = auto_charset($key,$from,$to); 
 $fContents[$_key] = auto_charset($val,$from,$to); 
 if($key != $_key ) { 
 unset($fContents[$key]); 
 } 
 } 
 return $fContents; 
 } 
 elseif(is_object($fContents)) { 
 $vars = get_object_vars($fContents); 
 foreach($vars as $key=>$val) { 
 $fContents->$key = auto_charset($val,$from,$to); 
 } 
 return $fContents; 
 } 
 else{ 
 return $fContents; 
 } 
} |   
 
 
 
 | 
  
 |