PHP中文工具类,支持汉字转拼音、拼音分词、简繁互转。
目前本类库拥有的三个功能,都是在实际开发过程中整理出来的。这次使用的数据不同于以前我开源过汉字转拼音和简繁互转,数据都是从字典网站采集下来的,比以前的数据更加准确。
由于中文的博大精深,字有多音字,简体字和繁体字也有多种对应。并且本类库返回的所有结果,均为包含所有组合的数组。
本类库字典数据总共收录73925个汉字,包括:3955个简体字,1761个繁体字,68209个其它汉字。
功能汉字转拼音use\Yurun\Util\Chinese;use\Yurun\Util\Chinese\Pinyin;$string='恭喜發財!123';echo$string,PHP_EOL;echo'全拼:',PHP_EOL;var_dump(Chinese::toPinyin($string,Pinyin::CONVERT_MODE_PINYIN));echo'首字母:',PHP_EOL;var_dump(Chinese::toPinyin($string,Pinyin::CONVERT_MODE_PINYIN_FIRST));echo'读音:',PHP_EOL;var_dump(Chinese::toPinyin($string,Pinyin::CONVERT_MODE_PINYIN_SOUND));echo'读音数字:',PHP_EOL;var_dump(Chinese::toPinyin($string,Pinyin::CONVERT_MODE_PINYIN_SOUND_NUMBER));echo'自选返回格式+以文本格式返回+自定义分隔符:',PHP_EOL;var_dump(Chinese::toPinyin($string,Pinyin::CONVERT_MODE_PINYIN|Pinyin::CONVERT_MODE_PINYIN_SOUND_NUMBER,''));echo'所有结果:',PHP_EOL;var_dump(Chinese::toPinyin($string));echo'不分割无拼音字符:',PHP_EOL;var_dump(Chinese::toPinyin($string,Pinyin::CONVERT_MODE_PINYIN,'',false));//结果太长,请自行运行代码查看拼音分词结果是字符串:
use\Yurun\Util\Chinese;$string2='xianggang';echo'"',$string2,'"的分词结果:',PHP_EOL;var_dump(Chinese::splitPinyin($string2));输出结果:
"xianggang"的分词结果:array(2){[0]=>string(11)"xianggang"[1]=>string(12)"xianggang"}结果是数组:
use\Yurun\Util\Chinese;$string2='xianggang';echo'"',$string2,'"的分词结果:',PHP_EOL;var_dump(Chinese::splitPinyinArray($string2));输出结果:
"xianggang"的分词结果:array(2){[0]=>array(2){[0]=>string(5)"xiang"[1]=>string(4)"gang"}[1]=>array(3){[0]=>string(2)"xi"[1]=>string(3)"ang"[2]=>string(4)"gang"}}简繁互转use\Yurun\Util\Chinese;$string3='中华人民共和国!恭喜發財!';echo'"',$string3,'"的简体转换:',PHP_EOL;var_dump(Chinese::toSimplified($string3));echo'"',$string3,'"的繁体转换:',PHP_EOL;var_dump(Chinese::toTraditional($string3));输出结果:
"中华人民共和国!恭喜發財!"的简体转换:array(1){[0]=>string(39)"中华人民共和国!恭喜发财!"}"中华人民共和国!恭喜發財!"的繁体转换:array(1){[0]=>string(39)"中華人民共和國!恭喜發財!"}数字转换useYurun\Util\Chinese\Number;functiontest($number){$chinese=Number::toChinese($number,['tenMin'=>true,//“一十二”=>“十二”]);$afterNumber=Number::toNumber($chinese);echo$number,'=>',$chinese,'=>',$afterNumber,'=>',0===bccomp($number,$afterNumber,20)?'true':'false',PHP_EOL;}test(1.234);test(-1234567890.666);test(pi());输出结果:
1.234=>一点二三四=>1.234=>true-1234567890.666=>负十二亿三千四百五十六万七千八百九十点六六六=>-1234567890.666=>true3.1415926535898=>三点一四一五九二六五三五八九八=>3.1415926535898=>true金额数字转换useYurun\Util\Chinese\Money;functiontest($number){$chinese=Money::toChinese($number,['tenMin'=>true,//“一十二”=>“十二”]);$afterMoney=Money::toNumber($chinese);echo$number,'=>',$chinese,'=>',$afterMoney,'=>',0===bccomp($number,$afterMoney)?'true':'false',PHP_EOL;}test(1.234);test(-1234567890.666);输出结果:
输出结果:1.234=>壹圆贰角叁分肆厘=>1.234=>true-1234567890.666=>负壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆陆角陆分陆厘=>-1234567890.666=>true
评论