支持汉转拼和拼音分词的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 相关文章推荐
一个域名查询的程序
Oct 09 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
利用php输出不同的心形图案
Apr 22 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
Dec 08 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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动态生成JavaScript代码
2009/03/09 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
php密码生成类实例
2014/09/24 PHP
PHP精确计算功能示例
2016/11/29 PHP
Ajax 数据请求的简单分析
2011/04/05 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
Python中类的继承代码实例
2014/10/28 Python
python绘制中国大陆人口热力图
2018/11/07 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
审计专业自荐信范文
2014/04/21 职场文书
某某同志考察材料
2014/05/28 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2015年中秋寄语
2015/07/31 职场文书
自信主题班会
2015/08/14 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
Python机器学习之基础概述
2021/05/19 Python
Java集成swagger文档组件
2021/06/28 Java/Android