软件简介

ChineseUtil

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

PHP Chinese Tool class, support Chinese pinyin, pinyin participle, simplified

and traditional conversion

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

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

本类库字典数据总共收录 73925 个汉字,包括:3955 个简体字,1761 个繁体字,68209 个其它汉字。

内存占用

类库第一个版本发布开始,群里朋友就展开了激烈的讨论,最大的问题就在于内存占用以及性能问题上。经过我不断尝试几种方案,最终决定设置三种模式,来适应不同用户之间的需求。

我已经尝试过 Redis,速度比 SQLite 慢 3 倍,没有必要加入支持。所以目前来看,SQLite 模式性价比最高!

性能模式 (Memory)

使用 SQLite 作为数据载体,一次性加载所有数据到变量,内存占用高(80 MB),性能最佳。

适合用于运行 Cli 任务。

需要 PDO 和 PDO_SQLITE 扩展支持。

通用模式 (SQLite)

使用 SQLite 作为数据载体,每次查询都通过 SQL 查询,内存占用低(600+ KB),性能中等。

适合用于大部分场景。

需要 PDO 和 PDO_SQLITE 扩展支持。

兼容模式 (JSON)

使用精简过的 JSON 数据作为数据载体,一次性加载所有数据到变量,内存占用中(28 MB),性能差。

内存占用量以实际为准,根据版本、扩展等环境的不同,占用的内存容量不一样,上述值为我电脑上的情况,仅供参考。

适合无法使用 PDO 的场景。

由于精简了数据,一些拼音结果需要经过代码计算处理才可以得出,所以性能较差。

默认情况下,优先使用通用模式,如果环境不支持 PDO 将采用兼容模式。

你可以在未执行任何初始化或者转换处理之前,设置使用何种模式运行。

// 设为性能模式

Chinese::setMode('Memory');

// 设为通用模式

Chinese::setMode('SQLite');

// 设为兼容模式

Chinese::setMode('JSON');

无论何种模式,拼音分词所需数据总是从 JSON 数据中加载。

使用说明

Composer 直接安装

composer require yurunsoft/chinese-util

Composer 项目配置引入

"require": {

"yurunsoft/chinese-util" : "~1.0"

}

功能

汉字转拼音

use \Yurun\Util\Chinese;

use \Yurun\Util\Chinese\Pinyin;

$string = '恭喜發財!';

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));

/**

所有结果:

array(4) {

["pinyin"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(4) "gong"

[1]=>

string(2) "xi"

[2]=>

string(2) "fa"

[3]=>

string(3) "cai"

[4]=>

string(3) "!"

}

}

["pinyinSoundNumber"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(5) "gong1"

[1]=>

string(3) "xi3"

[2]=>

string(3) "fa1"

[3]=>

string(4) "cai2"

[4]=>

string(3) "!"

}

}

["pinyinFirst"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(1) "g"

[1]=>

string(1) "x"

[2]=>

string(1) "f"

[3]=>

string(1) "c"

[4]=>

string(3) "!"

}

}

["pinyinSound"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(5) "gōng"

[1]=>

string(3) "xǐ"

[2]=>

string(3) "fā"

[3]=>

string(4) "cái"

[4]=>

string(3) "!"

}

}

}

全拼:

array(1) {

["pinyin"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(4) "gong"

[1]=>

string(2) "xi"

[2]=>

string(2) "fa"

[3]=>

string(3) "cai"

[4]=>

string(3) "!"

}

}

}

首字母:

array(1) {

["pinyinFirst"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(1) "g"

[1]=>

string(1) "x"

[2]=>

string(1) "f"

[3]=>

string(1) "c"

[4]=>

string(3) "!"

}

}

}

读音:

array(1) {

["pinyinSound"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(5) "gōng"

[1]=>

string(3) "xǐ"

[2]=>

string(3) "fā"

[3]=>

string(4) "cái"

[4]=>

string(3) "!"

}

}

}

读音数字:

array(1) {

["pinyinSoundNumber"]=>

array(1) {

[0]=>

array(5) {

[0]=>

string(5) "gong1"

[1]=>

string(3) "xi3"

[2]=>

string(3) "fa1"

[3]=>

string(4) "cai2"

[4]=>

string(3) "!"

}

}

}

自选返回格式 + 以文本格式返回 + 自定义分隔符:

array(2) {

["pinyin"]=>

array(1) {

[0]=>

string(18) "gong xi fa cai !"

}

["pinyinSoundNumber"]=>

array(1) {

[0]=>

string(22) "gong1 xi3 fa1 cai2 !"

}

}

* /

拼音分词

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) "中華人民共和國!恭喜發財!"

}

* /

php chinese.php,ChineseUtil相关推荐

  1. vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...

    摘要:本文介绍了Win7 64位环境下OpenCC(Open Chinese Convert) 1.0.4源码编译全过程,除VS2017外,VS2013以上版本也应该基本同样适用,其他版本的Windo ...

  2. 中国剩余定理(Chinese Remainder Theorem)

    中国剩余定理 民间传说着一则故事--"韩信点兵". 秦朝末年,楚汉相争.一次,韩信将1500名将士与楚王大将李锋交战.苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是韩信整顿 ...

  3. 【错误记录】国际化报错 ( “xxx“ is not translated in “zh“ (Chinese) )

    文章目录 一.报错信息 二.解决方案 一.报错信息 对应用进行国际化时报错 , 报错信息 : "xxx" is not translated in "zh" ( ...

  4. DevExpress WinFormsSuite 本地化(Simplified Chinese OR Traditional Chinese)

    目前网上还没有一个很完全的Devexpress WinFormsSuite 本地化(Simplified Chinese OR Traditional Chinese),有些只是本地化某些组件的一部分 ...

  5. PAT甲级1082 Read Number in Chinese:[C++题解]字符串处理

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析 从后往前,四位数作为1组来处理.每组单位最多是十百千,组间单位是万和亿.以123456789为例,分成三组为1,2345,6789,下 ...

  6. source insight 注释乱码?(【File】 > 【Reload As Encoding…】 > 【Chinese Simplified (GB18030)】 > 选择后,点击load)

    文章目录 没有用,只是改变了显示,复制出去还是乱码 能解决 没有用,只是改变了显示,复制出去还是乱码 如图,注释乱码 打开: options->preferences->Syntax Fo ...

  7. In English or Chinese?

    if possible you combine English and Chinese in two versions English Version Chinese Version Just do ...

  8. NYOJ 692 Chinese checkers(广搜)

    Chinese checkers 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 I think almost everyone play Chinese checker ...

  9. RoBERTa中文预训练模型:RoBERTa for Chinese

    RoBERTa for Chinese, TensorFlow & PyTorch 项目主页:https://github.com/brightmart/roberta_zh 中文预训练RoB ...

  10. NLP Chinese Corpus:大规模中文自然语言处理语料

    中文的信息无处不在,但如果想要获得大量的中文语料,却是不太容易,有时甚至非常困难.在 2019 年初这个时点上,普通的从业者.研究人员或学生,并没有一个比较好的渠道获得极大量的中文语料. 笔者想要训练 ...

最新文章

  1. spring全局异常抓取validation校验信息
  2. Leetcode 70
  3. 安装ESXI 5.1
  4. Java黑皮书课后题第7章:7.2(倒置输入的数)编写程序,读取10个整数,然后按照和读入顺序相反的顺序将它们显示出来
  5. java新建配置文件_使用Java输出字符流FileWriter创建配置文件
  6. Part1 R语言的基本操作
  7. 应用重连时间_App Store 无法正常下载应用,一直转圈的处理办法
  8. Python图像处理库PIL的ImageStat模块介绍
  9. Winform里面的缓存,MemoryCache使用
  10. 信号与线性系统管致中第六版pdf_【对讲机的那点事】无线电天馈系统中载频合路器的作用...
  11. kotlin 定义静态变量
  12. 抖音小店无货源,如何找到适合自己店铺的达人,精选联盟玩法分享
  13. 网络编程 3 tcp通信
  14. Visual Studio 2019 操作使用
  15. 服务器软件要如何维护
  16. 做了两年P7面试官,谈谈我认为的阿里人才画像,你配吗?
  17. 嵌入式软件工程师—成长笔记#02
  18. 一行代码完成Java的Excel读写
  19. 萧毅舟;2.22黄金原油日内走势分析及操作策略建议
  20. 利用二维码进行市场推广的十大新玩法

热门文章

  1. 水清冷冷:PS 2021 (Adobe Photoshop 2021) 安装教程和学习方法(附工具)
  2. Altium Designer--如何添加Mark点
  3. centos离线安装谷歌浏览器flash-player
  4. 数据库中的日期相减_sql日期相减得到天数【sql日期时间相减语句】
  5. Mac 使用 Aria2 下载百度网盘资源
  6. Windows 10 创建 删除 合并磁盘分区
  7. Unity中的资源管理-资源类型和基本使用
  8. 趣味运动会项目及规则
  9. python当前时间获取_python 当前时间获取方法
  10. 【转载】word空白页删不掉的7种原因及解决方法