前面写过一个PHP自动将汉字转为拼音和翻译成英文的例子,今天在分享一个PHP自动转拼音的例子,本例子还可以实现PHP汉字转拼音时候选择注音、首字母和首字母大写的效果。汉字库已经包含在了php代码内。不过因为汉字库文件内容太长,所以把他写到了一个记事本内,下载后插入到下面汉字库的位置就好。
namespaceapp\common\lib;
/**
*CreatedbyPhpStorm.
*User:Administrator
*Date:/1/4
*Time:17:26
*/
classChinesePinyin{
//utf-8中国汉字集合
private$ChineseCharacters;
//编码
private$charset='utf-8';
publicfunction__construct(){
if(empty($this->ChineseCharacters)){
$this->ChineseCharacters="汉字库写到这个位置";
}
}
/*
*转成带有声调的汉语拼音
*param$input_charString需要转换的汉字
*param$delimiterString转换之后拼音之间分隔符
*param$outside_ignoreBoolean是否忽略非汉字内容
*/
publicfunctionTransformWithTone($input_char,$delimiter='',$outside_ignore=false){
$input_len=iconv_strlen($input_char,$this->charset);
$output_char='';
for($i=0;$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;
}elseif(!$outside_ignore){
$output_char.=$word.$delimiter;
}
}
return$output_char;
}
/*
*转成带无声调的汉语拼音
*param$input_charString需要转换的汉字
*param$delimiterString转换之后拼音之间分隔符
*param$outside_ignoreBoolean是否忽略非汉字内容
*/
publicfunctionTransformWithoutTone($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_charString需要转换的汉字
*param$delimiterString转换之后拼音之间分隔符
*param$outside_ignoreBoolean是否忽略非汉字内容
*/
publicfunctionTransformUcwords($input_char,$delimiter='',$outside_ignore=true){
$str='';
$len=iconv_strlen($input_char,$this->charset);
for($i=0;$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;
}elseif(!$outside_ignore){
$str.=$delimiter.$word;
}
}
return$str;
}
}
$Pinyin=newChinesePinyin();
$words='东莞';
echo'
转成带有声调的汉语拼音
';
$result=$Pinyin->TransformWithTone($words);
echo$result,'
';
echo'
转成带无声调的汉语拼音
';
$result=$Pinyin->TransformWithoutTone($words,'');
echo($result),'
';
echo'
转成汉语拼音首字母
';
$result=$Pinyin->TransformUcwords($words);
echo($result),'
';
?>
如果觉得《php 转换带声调的字幕 PHP实现中文转拼音可选注音声调首字母大写》对你有帮助,请点赞、收藏,并留下你的观点哦!