失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php 转换带声调的字幕 PHP实现中文转拼音可选注音声调首字母大写

php 转换带声调的字幕 PHP实现中文转拼音可选注音声调首字母大写

时间:2023-01-27 14:33:45

相关推荐

php 转换带声调的字幕 PHP实现中文转拼音可选注音声调首字母大写

前面写过一个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实现中文转拼音可选注音声调首字母大写》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。