PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转
ChineseUtil
下载地址:https://github.com/Yurunsoft/ChineseUtil
另外一个中文转拼音工具:https://github.com/overtrue/pinyin
PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转。
PHP Chinese Tool class, support Chinese pinyin, pinyin participle, simplified and traditional conversion
目前本类库拥有的三个功能,都是在实际开发过程中整理出来的。这次使用的数据不同于以前我开源过汉字转拼音和简繁互转,数据都是从字典网站采集下来的,比以前的数据更加准确。
由于中文的博大精深,字有多音字,简体字和繁体字也有多种对应。并且本类库返回的所有结果,均为包含所有组合的数组。
本类库字典数据总共收录 73925 个汉字,包括:3955 个简体字,1761 个繁体字,68209 个其它汉字。
内存占用
类库第一个版本发布开始,群里朋友就展开了激烈的讨论,最大的问题就在于内存占用以及性能问题上。经过我不断尝试几种方案,最终决定设置三种模式,来适应不同用户之间的需求。
- 性能模式 (Memory),使用 SQLite 作为数据载体,一次性加载所有数据到变量,内存占用高(80 MB),性能最佳。
- 通用模式 (SQLite),使用 SQLite 作为数据载体,每次查询都通过 SQL 查询,内存占用低(600+ KB),性能中等。
- 兼容模式 (JSON),使用精简过的 JSON 数据作为数据载体,一次性加载所有数据到变量,内存占用中(28 MB),性能差。
内存占用量以实际为准,根据版本、扩展等环境的不同,占用的内存容量不一样,上述值为我电脑上的情况,仅供参考。
性能模式适合运行于持久性服务,推荐使用 Swoole 开发服务程序,只加载一次数据,无需重复加载。当然,你服务器内存足够大,或者并发访问不高也可以使用这种模式。
性能模式和通用模式需要 PDO 和 PDO_SQLITE 扩展支持。
兼容模式无扩展依赖,由于精简了数据,一些拼音结果需要经过代码计算处理才可以得出,所以性能较差。
默认情况下,优先使用通用模式,如果环境不支持 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; $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]=>
转载于:https://www.cnblogs.com/-mrl/p/8623234.html
PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转相关推荐
- 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)
好用的对象转xml.xml转对象工具类-支持集合嵌套转换(Java实现) 网上找了很多转换工具,对于自己的业务都不是很合适,所以总结了一下网上的方案,最终定下来是这样子的,主要使用dom4j做操作 m ...
- java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换
package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...
- excel工具类 支持2003、2007、2010、2013
excel工具类 支持2003.2007.2010.2013 引入包: poi-3.7-20101029.jar poi-examples-3.7-20101029.jar poi-ooxml-3. ...
- Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)
简介 这篇文章主要介绍了Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)以及相关的经验技巧,文章约21106字,浏览量320,点赞数5,值得参考! ...
- Java实用工具类-将汉字转为拼音
1. 导入对应的jar包 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j ...
- poi/jxls导入/导出Excel工具类(支持2003和2007)
1.ExportUtil导出工具类(根据模板导出),支持2003/2007不同excel格式文件 package org.nercita.bcp.util;import java.io.FileInp ...
- 这可能是最精简的Android6.0运行时权限处理,百行代码的工具类,支持Rationale,附:各种权限详细处理
0x00:前言 对于Android6.0运行时权限的处理方式网上有很多,包括注解,RxJava等等.一直没有正面提到我关心的问题–如果我不在Activity或者Fragment里面,需要运行时权限该怎 ...
- 使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)
使用POI在Excel中动态生成图表工具类 使用POI在Excel中动态生成图表工具类 由于公司是一个生成报表的机构,之前一直使用pageOffice,但是公司领导就是不买,你说公司那样有钱磨磨唧唧干 ...
- PHP中文简繁互转代码 完美支持大陆、香港、台湾及新加坡
利用MediaWiki 作中文简繁互换,支持不同地方中文用字上的分別(大陆.香港.台湾及新加坡). 例子: (简 > 繁) 面包 > 麵包 (zh-tw)寮国 > 老撾 (zh-hk ...
最新文章
- (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat
- DevExpress的XtraReport中的Report Bands介绍和使用心得(帮助文档)
- 更新Silverlight ctp到Silverlight beta 1.0
- python论坛app_理解python web开发,轻松搭建web app!
- buntu 8.04 安装 mysql 无提示输入用户名 密码 ,怎么修改
- 如何给柱状图柱子添加阴影_【LeetCode日记】84. 柱状图中最大的矩形
- 规范白盒生态 S³IP助力未来可预期服务网络
- java读取rvt文件数据_Revit二次开发之隐藏API 独立进程读取rvt文件
- 【BZOJ】2289: 【POJ Challenge】圆,圆,圆
- MVC模式中编写一个登录的Servlet
- 解决VS2019配置QT6.1.1出现大量错误信息
- 电话录音系统服务器 显示断线,电话录音系统不稳定解决方法?
- 云计算开发教程,云计算能干什么?
- 两个数的最大公因数和最小公倍数
- 微信小程序云开发之简单两步实现集成赞赏加群弹窗功能
- jquery的图片播放插件 - colorbox
- 计算机单片机考试作弊检讨书,考试作弊检讨书2000字5篇
- 数据人的生活智慧(1)
- 数据挖掘之关联规则挖掘的一些定义
- 夫唯不争——世赛网络系统管理赛项小记
热门文章
- 用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)
- 字节序 主机字节序与网络字节序互相转换
- 实战PyQt5:090-处理一个QPaintDevice错误
- 万字总结MATLAB中的图形绘制
- 使用python3登陆12306网站
- MATLAB神经网络——BP神经网络训练过程介绍(newff)
- 深圳职业学院计算机网络技术,深圳信息职业技术学院2020年自主招生计算机信息管理、计算机网络技术考试大纲(面向中职)...
- Hbuilder真机调试
- python全栈测试开发_python全栈的基础知识
- 进程(四)exec函数