支持汉转拼和拼音分词的PHP中文工具类ChineseUtil


Posted in PHP onFebruary 23, 2018

PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转。

PHP Chinese Tool class, support Chinese pinyin, pinyin participle, simplified and traditional conversion

目前本类库拥有的三个功能,都是在实际开发过程中整理出来的。这次使用的数据不同于以前我开源过汉字转拼音和简繁互转,数据都是从字典网站采集下来的,比以前的数据更加准确。

由于中文的博大精深,字有多音字,简体字和繁体字也有多种对应。并且本类库返回的所有结果,均为包含所有组合的数组。

本类库字典数据加载后会占用 40+ MB 内存,在访问量大的接口要使用此类汉字转拼音、繁简转换功能时,推荐用 Swoole 开发一个异步服务程序,只需加载一次数据,就可以持续高效地为你提供服务。

使用说明

Composer 直接安装

composer require yurunsoft/chinese-util

Composer 项目配置引入

"require": {
  "yurunsoft/chinese-util" : "~1.0"
}

功能

汉字转拼音

use \Yurun\Util\Chinese;
$string = '恭喜??!把我翻译成拼音看下?';
echo $string, PHP_EOL;

echo '所有结果:', PHP_EOL;
var_dump(Chinese::toPinyin($string));

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, '/'));
/**
输出结果:
array(4) {
 ["pinyin"]=>
 array(1) {
  [0]=>
  string(58) "gong xi fa cai ! ba wo fan yi cheng pin yin kan xia ? "
 }
 ["pinyinSound"]=>
 array(4) {
  [0]=>
  string(63) "gōng xǐ fā cái bǎ wǒ fān yì chéng pīn yīn kàn xià "
  [1]=>
  string(63) "gōng xǐ fā cái bà wǒ fān yì chéng pīn yīn kàn xià "
  [2]=>
  string(63) "gōng xǐ fā cái bǎ wǒ fān yì chéng pīn yīn kān xià "
  [3]=>
  string(63) "gōng xǐ fā cái bà wǒ fān yì chéng pīn yīn kān xià "
 }
 ["pinyinSoundNumber"]=>
 array(4) {
  [0]=>
  string(63) "gong1 xi3 fa1 cai2 ba3 wo3 fan1 yi4 cheng2 pin1 yin1 kan4 xia4 "
  [1]=>
  string(63) "gong1 xi3 fa1 cai2 ba4 wo3 fan1 yi4 cheng2 pin1 yin1 kan4 xia4 "
  [2]=>
  string(63) "gong1 xi3 fa1 cai2 ba3 wo3 fan1 yi4 cheng2 pin1 yin1 kan1 xia4 "
  [3]=>
  string(63) "gong1 xi3 fa1 cai2 ba4 wo3 fan1 yi4 cheng2 pin1 yin1 kan1 xia4 "
 }
 ["pinyinFirst"]=>
 array(1) {
  [0]=>
  string(34) "g x f c ! b w f y c p y k x ? "
 }
}
全拼:
array(1) {
 ["pinyin"]=>
 array(1) {
  [0]=>
  string(58) "gong xi fa cai ! ba wo fan yi cheng pin yin kan xia ? "
 }
}
首字母:
array(1) {
 ["pinyinFirst"]=>
 array(1) {
  [0]=>
  string(34) "g x f c ! b w f y c p y k x ? "
 }
}
读音:
array(1) {
 ["pinyinSound"]=>
 array(4) {
  [0]=>
  string(63) "gōng xǐ fā cái bǎ wǒ fān yì chéng pīn yīn kàn xià "
  [1]=>
  string(63) "gōng xǐ fā cái bà wǒ fān yì chéng pīn yīn kàn xià "
  [2]=>
  string(63) "gōng xǐ fā cái bǎ wǒ fān yì chéng pīn yīn kān xià "
  [3]=>
  string(63) "gōng xǐ fā cái bà wǒ fān yì chéng pīn yīn kān xià "
 }
}
读音数字:
array(1) {
 ["pinyinSoundNumber"]=>
 array(4) {
  [0]=>
  string(63) "gong1 xi3 fa1 cai2 ba3 wo3 fan1 yi4 cheng2 pin1 yin1 kan4 xia4 "
  [1]=>
  string(63) "gong1 xi3 fa1 cai2 ba4 wo3 fan1 yi4 cheng2 pin1 yin1 kan4 xia4 "
  [2]=>
  string(63) "gong1 xi3 fa1 cai2 ba3 wo3 fan1 yi4 cheng2 pin1 yin1 kan1 xia4 "
  [3]=>
  string(63) "gong1 xi3 fa1 cai2 ba4 wo3 fan1 yi4 cheng2 pin1 yin1 kan1 xia4 "
 }
}
自选 + 自定义分隔符:
array(2) {
 ["pinyin"]=>
 array(1) {
  [0]=>
  string(58) "gong/xi/fa/cai/!/ba/wo/fan/yi/cheng/pin/yin/kan/xia/?/"
 }
 ["pinyinSoundNumber"]=>
 array(4) {
  [0]=>
  string(63) "gong1/xi3/fa1/cai2/ba3/wo3/fan1/yi4/cheng2/pin1/yin1/kan4/xia4/"
  [1]=>
  string(63) "gong1/xi3/fa1/cai2/ba4/wo3/fan1/yi4/cheng2/pin1/yin1/kan4/xia4/"
  [2]=>
  string(63) "gong1/xi3/fa1/cai2/ba3/wo3/fan1/yi4/cheng2/pin1/yin1/kan1/xia4/"
  [3]=>
  string(63) "gong1/xi3/fa1/cai2/ba4/wo3/fan1/yi4/cheng2/pin1/yin1/kan1/xia4/"
 }
}
 * /

拼音分词

use \Yurun\Util\Chinese;
$string2 = 'xianggang';
echo '"', $string2, '"的分词结果:', PHP_EOL;
var_dump(Chinese::splitPinyin($string2));
/**
输出结果:
"xianggang"的分词结果:
array(2) {
 [0]=>
 string(12) "xi ang gang "
 [1]=>
 string(11) "xiang 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) "中?人民共和??」?舶l?!"
}
 * /
PHP 相关文章推荐
PHP 定界符 使用技巧
Jun 14 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
php引用传值实例详解学习
Nov 06 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php筛选不存在的图片资源
Apr 28 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP常见数组排序方法小结
Aug 20 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 #PHP
php 广告点击统计代码(php+mysql)
Feb 21 #PHP
详细解读php的命名空间(二)
Feb 21 #PHP
详细解读php的命名空间(一)
Feb 21 #PHP
thinkphp5 migrate数据库迁移工具
Feb 20 #PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 #PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 #PHP
You might like
以文件形式缓存php变量的方法
2015/06/26 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
浅谈js中的bind
2019/03/18 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
pycharm修改file type方式
2019/11/19 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
办理护照介绍信
2014/01/16 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
农村文化活动总结
2014/08/28 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
python实现简单的聊天小程序
2021/07/07 Python
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers