• Stars
    star
    494
  • Rank 87,291 (Top 2 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

PHP 中文工具包,支持汉字转拼音、拼音分词、简繁互转、数字、金额大写;QQ群:17916227

ChineseUtil

PHP 中文工具包,支持汉字转拼音、拼音分词、简繁互转、数字转换、金额数字转换。

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

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

模式

性能模式 (Memory)

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

适合用于运行 Cli 任务。

需要 PDO 和 PDO_SQLITE 扩展支持。

通用模式 (SQLite)

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

适合用于大部分场景。

需要 PDO 和 PDO_SQLITE 扩展支持。

兼容模式 (JSON)

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

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

适合无法使用 PDO 的场景。

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

FFI 模式 (FFI)

需要 PHP >= 7.4 并且启用 FFI 扩展,代码全部由 C++ 开发,性能和内存占用都比 PHP 实现的要好。

FFI 动态库 C++ 代码:https://github.com/Yurunsoft/chinese-util-cpp

Swoole FFI 模式 (SwooleFFI)

需要 PHP >= 7.4 并且启用 FFI、Swoole 扩展,代码全部由 C++ 开发,性能和内存占用都比 PHP 实现的要好。

不会阻塞 PHP 代码所在线程。


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

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

// 设为性能模式
Chinese::setMode('Memory');
// 设为通用模式
Chinese::setMode('SQLite');
// 设为兼容模式
Chinese::setMode('JSON');
// 设为 FFI 模式
Chinese::setMode('FFI');
// 设为Swoole FFI 模式
Chinese::setMode('SwooleFFI');

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

FFI 参数设置:(一般用于自己编译的情况)

use Yurun\Util\Chinese\FFIDriver;

FFIDriver::$library = '.so 文件路径';
FFIDriver::$characterDataPath = '字符数据文件路径';
FFIDriver::$pinyinDataPath = '拼音数据文件路径';

使用说明

Composer 直接安装

composer require yurunsoft/chinese-util

Composer 项目配置引入

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

功能

汉字转拼音

use \Yurun\Util\Chinese;
use \Yurun\Util\Chinese\Pinyin;
$string = '恭喜發財!123';
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));

echo '不分割无拼音字符:', PHP_EOL;
var_dump(Chinese::toPinyin($string, Pinyin::CONVERT_MODE_PINYIN, ' ', false));

// 结果太长,请自行运行代码查看

拼音分词

结果是字符串:

use \Yurun\Util\Chinese;
$string2 = 'xianggang';
echo '"', $string2, '"的分词结果:', PHP_EOL;
var_dump(Chinese::splitPinyin($string2));

输出结果:

"xianggang"的分词结果:
array(2) {
  [0]=>
  string(11) "xiang gang"
  [1]=>
  string(12) "xi ang gang"
}

结果是数组:

use \Yurun\Util\Chinese;
$string2 = 'xianggang';
echo '"', $string2, '"的分词结果:', PHP_EOL;
var_dump(Chinese::splitPinyinArray($string2));

输出结果:

"xianggang"的分词结果:
array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "xiang"
    [1]=>
    string(4) "gang"
  }
  [1]=>
  array(3) {
    [0]=>
    string(2) "xi"
    [1]=>
    string(3) "ang"
    [2]=>
    string(4) "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) "中華人民共和國!恭喜發財!"
}

数字转换

use Yurun\Util\Chinese\Number;
function test($number)
{
    $chinese = Number::toChinese($number, [
        'tenMin'    =>  true, // “一十二” => “十二”
    ]);
    $afterNumber = Number::toNumber($chinese);
    echo $number, '=>', $chinese, '=>', $afterNumber, '=>', 0 === bccomp($number, $afterNumber, 20) ? 'true' : 'false', PHP_EOL;
}

test(1.234);
test(-1234567890.666);
test(pi());

输出结果:

1.234=>一点二三四=>1.234=>true
-1234567890.666=>负十二亿三千四百五十六万七千八百九十点六六六=>-1234567890.666=>true
3.1415926535898=>三点一四一五九二六五三五八九八=>3.1415926535898=>true

金额数字转换

use Yurun\Util\Chinese\Money;
function test($number)
{
    $chinese = Money::toChinese($number, [
        'tenMin'    =>  true, // “一十二” => “十二”
    ]);
    $afterMoney = Money::toNumber($chinese);
    echo $number, '=>', $chinese, '=>', $afterMoney, '=>', 0 === bccomp($number, $afterMoney) ? 'true' : 'false', PHP_EOL;
}

test(1.234);
test(-1234567890.666);

输出结果:

输出结果:
1.234=>壹圆贰角叁分肆厘=>1.234=>true
-1234567890.666=>负壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆陆角陆分陆厘=>-1234567890.666=>true

More Repositories

1

PaySDK

PHP 集成支付 SDK ,集成了支付宝、微信支付的支付接口和其它相关接口的操作。支持 php-fpm 和 Swoole,所有框架通用。宇润PHP全家桶技术支持群:17916227
PHP
883
star
2

YurunOAuthLogin

PHP 第三方登录授权 SDK,集成了QQ、微信、微博、Github等常用接口。支持 php-fpm 和 Swoole,所有框架通用。QQ群:17916227
PHP
421
star
3

YurunHttp

YurunHttp 是开源的 PHP HTTP 客户端,支持链式操作,简单易用。完美支持Curl、Swoole 协程。QQ群:17916227
PHP
257
star
4

Guzzle-Swoole

让基于 Guzzle 的项目完美无缝兼容 Swoole 协程,支持:Guzzle、Elasticsearch client——来自宇润 PHP 全家桶
PHP
160
star
5

php-tdengine

大数据引擎 TDengine 的 PHP 客户端扩展,支持 Swoole!
PHP
75
star
6

YurunProxy

基于 Swoole 的内网穿透,支持本地微信开发、Web开发,让外网能够访问到!山寨简易版 Ngrok!
PHP
67
star
7

YurunLock

PHP阻塞锁和非阻塞锁机制,内置解决并发锁重复执行的方案。目前支持文件、Redis、Memcache、Memcached。
PHP
50
star
8

mddoc

开源的 markdown 文档转 html 文档工具,它使用 php 开发,支持 php >= 5.4。它生成的 html 可以直接放在网站上,支持全文搜索、自定义 html 模版。
PHP
46
star
9

PHPChineseToPinyin

请移步:
40
star
10

ApiAgent

PHP开发的API接口代理,支持跨域接口代理和接口合并请求功能。程序员聚集群:74401592
PHP
38
star
11

yurun-crawler

宇润爬虫框架(Yurun Crawler) 是一个低代码、高性能、分布式爬虫采集框架,基于 imi 框架开发,运行在 Swoole 常驻内存的协程环境。
PHP
38
star
12

YurunPHP

YurunPHP是宇润软件专为懒人开发者设计的一款开源PHP框架,基于MVC动态分层架构,开发者可以根据需要自行扩充分层。宇润PHP交流群:17916227
PHP
35
star
13

PHPMailer-Swoole

安装最新版Swoole,开启一键协程化,使用原版phpmailer就可以实现协程化了。本项目已经没有维护下去的意义。
PHP
31
star
14

chinese-util-cpp

C++ 实现的汉字转拼音、拼音分词、简繁互转、数字转换、金额数字转换。
C++
30
star
15

swoole-co-pool

Swoole 协程工作池——来自宇润 PHP 全家桶
PHP
27
star
16

imi-gobang

PHP
24
star
17

influxdb-orm

一个用于 InfluxDB 时序数据库的 ORM,终结没有 InfluxDB ORM 的时代。QQ群:17916227
PHP
19
star
18

sql-diff

本项目实现了比较 MySQL 建表语句的差异,并生成结构同步代码,功能类似 Navicat 的结构同步。
PHP
16
star
19

yurun-crawler-example

宇润爬虫框架(Yurun Crawler)示例程序
PHP
15
star
20

tdengine-restful-connector

PHP TDEngine RESTful connector
PHP
15
star
21

nacos-php

Nacos php sdk. Request and response data are all strongly typed and IDE friendly. Complete test cases and support for Swoole Coroutine.
PHP
14
star
22

tdengine-orm

基于 tdengine-restful-connector、php-tdengine 开发的 TDEngine ORM。
PHP
11
star
23

ide-helper

让 PHP 扩展支持 IDE 代码提示,通过在 composer.json 配置,可以支持所有扩展,包括但不限于 Swoole、Redis 等
PHP
10
star
24

net-test-go

这是宇润使用 Go 语言开发的一个 Http 压测工具。
Go
9
star
25

CBL-Mariner-Builder

Microsoft Linux CBL-Mariner iso download
Shell
9
star
26

php-macro

支持在 PHP 代码中使用类似 C/C++ 中的宏,进行代码预编译。可以方便兼容不同版本和环境下运行的 PHP 代码。
PHP
9
star
27

swoole-shared-memory

Swoole Shared Memory (简称 SSM) 是为了解决 Swoole 常驻内存场景,多进程变量共享问题而开发的组件。
PHP
8
star
28

YurunBlog

基于 YurunPHP2 框架的博客系统!正在开发中!
PHP
7
star
29

php-env

宇润日常开发中,整理的一些常见的 PHP 环境相关的一键安装工具脚本。Composer 一键安装脚本。
Shell
7
star
30

YurunEvent

PHP事件类,支持全局事件和类中事件。程序员Q群:74401592
PHP
7
star
31

workerman-gateway-sdk

一个支持在 Swoole 或其它非 Workerman 环境,开发 Gateway Worker 的组件。
PHP
7
star
32

rust-webhook

宇润用 Rust 开发的简易 Webhook 服务,支持 Gitee 和 Github。
Rust
6
star
33

TypescriptAndVue

这是一个已经配置好的 TypeScript + Vue 传统多页面开发模式项目。
JavaScript
4
star
34

net-test-swoole

这是宇润使用 Swoole 开发的一个 Http 压测工具。
PHP
4
star
35

SphinxClient-Swoole

Sphinx Client 支持 Swoole 协程环境
PHP
3
star
36

VSCode-PHPComments

VSCode插件,用于添加PHP方法注释
TypeScript
3
star
37

SimplePagebar

一个使用TypeScript开发的简单分页条,支持首页、末页、上一页、下一页、自定义页码切换。
TypeScript
2
star
38

YurunRSS

PHP的RSS生成类,方便生成RSS文件
PHP
2
star
39

YurunAuth

基于YurunPHP框架的权限控制类,提供一个思路,如需在其它框架中使用请自行改造。
PHP
2
star
40

PHPTSChinese

请移步:
2
star
41

php-http-client-test

Guzzle、Saber 以及 YurunHttp 性能测试
PHP
1
star