PHP实现中文转拼音可选注音声调首字母大写
0前面写过一个php自动将汉字转为拼音和翻译成英文的例子,今天在分享一个PHP自动转拼音的例子,本例子还可以实现PHP汉字转拼音时候选择注音、首字母和首字母大写的效果。汉字库已经包含在了php代码内。不过因为汉字库文件内容太长,所以把他写到了一个记事本内,下载后插入到下面汉字库的位置就好。
ChineseCharacters) ){ $this->ChineseCharacters = "汉字库写到这个位置"; } } /* * 转成带有声调的汉语拼音 * param $input_char String 需要转换的汉字 * param $delimiter String 转换之后拼音之间分隔符 * param $outside_ignore Boolean 是否忽略非汉字内容 */ public function TransformWithTone($input_char,$delimiter=' ',$outside_ignore=false){ $input_len = iconv_strlen($input_char,$this->charset); $output_char = ''; for($i=0;$i<$input_len;$i++){ $word = iconv_substr($input_char,$i,1,$this->charset); if(preg_match('/^[\x{4e00}-\x{9fa5}]$/u',$word) && preg_match('/\,'.preg_quote($word).'(.*?)\,/',$this->ChineseCharacters,$matches) ){ $output_char.=$matches[1].$delimiter; }else if(!$outside_ignore){ $output_char.=$word.$delimiter; } } return $output_char; } /* * 转成带无声调的汉语拼音 * param $input_char String 需要转换的汉字 * param $delimiter String 转换之后拼音之间分隔符 * param $outside_ignore Boolean 是否忽略非汉字内容 */ public function TransformWithoutTone($input_char,$delimiter='',$outside_ignore=false){ $char_with_tone = $this->TransformWithTone($input_char,$delimiter,$outside_ignore); $char_without_tone = str_replace(array('ā','á','ǎ','à','ō','ó','ǒ','ò','ē','é','ě','è','ī','í','ǐ','ì','ū','ú','ǔ','ù','ǖ','ǘ','ǚ','ǜ','ü'), array('a','a','a','a','o','o','o','o','e','e','e','e','i','i','i','i','u','u','u','u','v','v','v','v','v') ,$char_with_tone ); return $char_without_tone; } /* * 转成汉语拼音首字母 * param $input_char String 需要转换的汉字 * param $delimiter String 转换之后拼音之间分隔符 * param $outside_ignore Boolean 是否忽略非汉字内容 */ public function TransformUcwords($input_char,$delimiter='',$outside_ignore=true){ $str=''; $len=iconv_strlen($input_char,$this->charset); for ($i=0;$i<$len;$i++){ $word = iconv_substr($input_char,$i,1,$this->charset); if (preg_match('/^[\x{4e00}-\x{9fa5}]$/u',$word)){ $char_without_tone = ucwords($this->TransformWithoutTone($word,' ',$outside_ignore)); $ucwords = preg_replace('/[^A-Z]/','',$char_without_tone); if(!empty($delimiter)){ $ucwords = implode($delimiter,str_split($ucwords)); } $str .=$delimiter.$ucwords; }else if(!$outside_ignore){ $str.=$delimiter.$word; } } return $str; } } $Pinyin=new ChinesePinyin(); $words='东莞'; echo '转成带有声调的汉语拼音
'; echo '
'; $result = $Pinyin->TransformWithTone($words); echo $result,'转成带无声调的汉语拼音
'; echo '
'; $result = $Pinyin->TransformWithoutTone($words,' '); echo($result),'转成汉语拼音首字母
'; ?>
'; $result = $Pinyin->TransformUcwords($words); echo($result),'
转得的拼音 汉字转拼音下载 单词转拼音 拼音转中文在线翻译 转得快的拼音 转过来的拼音 注音拼音转换 转读音 打转的拼音