欢迎!我白天是个邮递员,晚上就是个有抱负的演员。这是我的网站。我住在天朝的帝都,有条叫做Jack的狗。
* 中文简繁体切换* 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和valueif(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;}
