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 中文工具类,支持汉字转拼音、拼音分词、简繁互转相关推荐

  1. 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)

    好用的对象转xml.xml转对象工具类-支持集合嵌套转换(Java实现) 网上找了很多转换工具,对于自己的业务都不是很合适,所以总结了一下网上的方案,最终定下来是这样子的,主要使用dom4j做操作 m ...

  2. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换

    package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...

  3. excel工具类 支持2003、2007、2010、2013

    excel工具类  支持2003.2007.2010.2013 引入包: poi-3.7-20101029.jar poi-examples-3.7-20101029.jar poi-ooxml-3. ...

  4. Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)

    简介  这篇文章主要介绍了Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)以及相关的经验技巧,文章约21106字,浏览量320,点赞数5,值得参考! ...

  5. Java实用工具类-将汉字转为拼音

    1. 导入对应的jar包 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j ...

  6. poi/jxls导入/导出Excel工具类(支持2003和2007)

    1.ExportUtil导出工具类(根据模板导出),支持2003/2007不同excel格式文件 package org.nercita.bcp.util;import java.io.FileInp ...

  7. 这可能是最精简的Android6.0运行时权限处理,百行代码的工具类,支持Rationale,附:各种权限详细处理

    0x00:前言 对于Android6.0运行时权限的处理方式网上有很多,包括注解,RxJava等等.一直没有正面提到我关心的问题–如果我不在Activity或者Fragment里面,需要运行时权限该怎 ...

  8. 使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)

    使用POI在Excel中动态生成图表工具类 使用POI在Excel中动态生成图表工具类 由于公司是一个生成报表的机构,之前一直使用pageOffice,但是公司领导就是不买,你说公司那样有钱磨磨唧唧干 ...

  9. PHP中文简繁互转代码 完美支持大陆、香港、台湾及新加坡

    利用MediaWiki 作中文简繁互换,支持不同地方中文用字上的分別(大陆.香港.台湾及新加坡). 例子: (简 > 繁) 面包 > 麵包 (zh-tw)寮国 > 老撾 (zh-hk ...

最新文章

  1. (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat
  2. DevExpress的XtraReport中的Report Bands介绍和使用心得(帮助文档)
  3. 更新Silverlight ctp到Silverlight beta 1.0
  4. python论坛app_理解python web开发,轻松搭建web app!
  5. buntu 8.04 安装 mysql 无提示输入用户名 密码 ,怎么修改
  6. 如何给柱状图柱子添加阴影_【LeetCode日记】84. 柱状图中最大的矩形
  7. 规范白盒生态 S³IP助力未来可预期服务网络
  8. java读取rvt文件数据_Revit二次开发之隐藏API 独立进程读取rvt文件
  9. 【BZOJ】2289: 【POJ Challenge】圆,圆,圆
  10. MVC模式中编写一个登录的Servlet
  11. 解决VS2019配置QT6.1.1出现大量错误信息
  12. 电话录音系统服务器 显示断线,电话录音系统不稳定解决方法?
  13. 云计算开发教程,云计算能干什么?
  14. 两个数的最大公因数和最小公倍数
  15. 微信小程序云开发之简单两步实现集成赞赏加群弹窗功能
  16. jquery的图片播放插件 - colorbox
  17. 计算机单片机考试作弊检讨书,考试作弊检讨书2000字5篇
  18. 数据人的生活智慧(1)
  19. 数据挖掘之关联规则挖掘的一些定义
  20. 夫唯不争——世赛网络系统管理赛项小记

热门文章

  1. 用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)
  2. 字节序 主机字节序与网络字节序互相转换
  3. 实战PyQt5:090-处理一个QPaintDevice错误
  4. 万字总结MATLAB中的图形绘制
  5. 使用python3登陆12306网站
  6. MATLAB神经网络——BP神经网络训练过程介绍(newff)
  7. 深圳职业学院计算机网络技术,深圳信息职业技术学院2020年自主招生计算机信息管理、计算机网络技术考试大纲(面向中职)...
  8. Hbuilder真机调试
  9. python全栈测试开发_python全栈的基础知识
  10. 进程(四)exec函数