* 中文简繁体切换
* zh-hans为简体中文 zh-hant为繁体中文
* $input 需要转换的文本
* $change_language_code 转换语言代码
* $current_language_code 当前语言代码
class ZhConvert{ public static function zh($input,$change_language_code = 'zh-hant',$current_language_code = 'zh-hans') { if ($change_language_code == $current_language_code) {//转换语言与当前语言相同 $output = $input;//不转换 } elseif ($change_language_code == 'zh-hans' && $current_language_code == 'zh-hant') {//转换简体、当前繁体 $output = self::zh_hant_to_zh_hans($input);//繁体转简体 } elseif ($change_language_code == 'zh-hant' && $current_language_code == 'zh-hans') {//转换繁体、当前简体 $output = self::zh_hans_to_zh_hant($input);//简体转繁体 } else { $output = $input;//不转换 } return $output; }
* 中文简繁体自动切换
* zh-hans为简体中文 zh-hant为繁体中文
* $input 需要转换的文本
* $current_language_code 当前语言代码
public static function zh_auto($input,$current_language_code = 'zh-hans') { if ($current_language_code == 'zh-hant') {//转换简体、当前繁体 $output = self::zh_hant_to_zh_hans($input);//繁体转简体 } elseif ($current_language_code == 'zh-hans') {//转换繁体、当前简体 $output = self::zh_hans_to_zh_hant($input);//简体转繁体 } else { $output = $input;//不转换 } return $output; }
* 老方法
public static function zh_hans_to_zh_hant_old($input) {//简体到繁体的函数,$input是需要转的字符串,可以包含数字、字母、简体繁体汉字等 $array = self::get_array_zh_hans_to_zh_hant();//简体、繁体对照表 if(trim($input)==''){ //输入为空则返回空字符串 return ''; } $output = ''; $count = mb_strlen($input,'utf-8'); //按照utf-8字符计数 for($i = 0; $i <= $count; $i++){ //逐个字符处理 $jchar = mb_substr($input,$i,1,'utf-8'); //分离出一个需要处理的字符 $fchar = isset($array[$jchar])?$array[$jchar]:$jchar; //如果在上面的对照数组中就转换,否则原样不变 $output .= $fchar; //逐个字符添加到输出 } return $output;//返回输出 }
* 新方法
* 改用str_replace函数来替代老方法的循环方式
public static function zh_hans_to_zh_hant($input) {//简体到繁体的函数,$input是需要转的字符串,可以包含数字、字母、简体繁体汉字等 $array = self::get_array_zh_hans_to_zh_hant();//简体、繁体对照表 $array_zh_hans = array_keys($array); $array_zh_hant = array_values($array); if(trim($input)==''){ //输入为空则返回空字符串 return ''; } $output = str_replace($array_zh_hans, $array_zh_hant, $input); return $output;//返回输出 }
* 老方法
public static function zh_hant_to_zh_hans_old($input) {//繁体到简体的函数,$input是需要转的字符串,可以包含数字、字母、简体繁体汉字等 $array = self::get_array_zh_hans_to_zh_hant();//简体、繁体对照表 $array = array_flip($array); //如果需要繁体到简体的转换,只需要用一个array_flip函数来对调key和value if(trim($input)==''){ //输入为空则返回空字符串 return ''; } $output = ''; $count = mb_strlen($input,'utf-8'); //按照utf-8字符计数 for($i = 0; $i <= $count; $i++){ //逐个字符处理 $fchar = mb_substr($input,$i,1,'utf-8'); //分离出一个需要处理的字符 $jchar = isset($array[$fchar])?$array[$fchar]:$fchar; //如果在上面的对照数组中就转换,否则原样不变 $output .= $jchar; //逐个字符添加到输出 } return $output;//返回输出 }
* 新方法
* 改用str_replace函数来替代老方法的循环方式
public static function zh_hant_to_zh_hans($input) {//繁体到简体的函数,$input是需要转的字符串,可以包含数字、字母、简体繁体汉字等 $array = self::get_array_zh_hant_to_zh_hans();//简体、繁体对照表 $array_zh_hant = array_keys($array); $array_zh_hans = array_values($array); if(trim($input)==''){ //输入为空则返回空字符串 return ''; } $output = str_replace($array_zh_hant, $array_zh_hans, $input); return $output;//返回输出 }
1275个简体、繁体对照表做成数组反转+xx个繁体到简体的数组元素
private static function get_array_zh_hant_to_zh_hans() { $array = self::get_array_zh_hans_to_zh_hant();//1275个简体、繁体对照表做成数组 $array = array_flip($array);//交换数组中的键和值 $array['週'] = '周'; $array['髮'] = '发'; $array['噁'] = '恶'; $array['麵'] = '面'; $array['乾'] = '干'; $array['佈'] = '布'; $array['迴'] = '回'; $array['徵'] = '征'; $array['穫'] = '获'; $array['穀'] = '谷'; $array['鬍'] = '胡'; $array['鬚'] = '须'; $array['閒'] = '闲'; $array['鬆'] = '松'; $array['姦'] = '奸'; $array['鬱'] = '郁'; $array['製'] = '制'; $array['馀'] = '余'; $array['嚮'] = '向'; $array['繫'] = '系'; $array['罎'] = '坛'; $array['檯'] = '台'; $array['颱'] = '台'; $array['捨'] = '舍'; $array['籤'] = '签'; $array['僕'] = '仆'; $array['闢'] = '辟'; $array['衊'] = '蔑'; $array['濛'] = '蒙'; $array['矇'] = '蒙'; $array['儘'] = '尽'; $array['薑'] = '姜'; $array['颳'] = '刮'; $array['噹'] = '当'; $array['衝'] = '冲'; $array['彆'] = '别'; $array['臺'] = '台'; $array['瀏'] = '浏'; $array['號'] = '号'; $array['產'] = '产'; $array['紘'] = '纮'; $array['財'] = '财'; $array['恆'] = '恒'; $array['啓'] = '启'; $array['錡'] = '锜'; $array['酈'] = '丽'; return $array; }