overtrue / php-opencc
中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。基于 [BYVoid/OpenCC](https://github.com/BYVoid/OpenCC) 数据实现。
Fund package maintenance!
overtrue
Installs: 13 657
Dependents: 0
Suggesters: 0
Security: 0
Stars: 97
Watchers: 2
Forks: 14
Open Issues: 0
Requires
- php: >=8.0
- ext-zip: *
- symfony/console: ^5.4|^6.3|^7.0
- symfony/process: ^5.4|^6.3|^7.0
Requires (Dev)
- brainmaestro/composer-git-hooks: dev-master
- jetbrains/phpstorm-attributes: ^1.0
- laravel/pint: ^0.1|^1.10
- mockery/mockery: ^1.2
- nunomaduro/termwind: ^1.15
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.10
This package is auto-updated.
Last update: 2025-08-12 03:02:29 UTC
README
中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。基于 BYVoid/OpenCC 数据实现。
安装
composer require overtrue/php-opencc -vvv
使用
use Overtrue\PHPOpenCC\OpenCC; echo OpenCC::convert('服务器', 'SIMPLIFIED_TO_TAIWAN_WITH_PHRASE'); // output: 伺服器 // 批量转换 OpenCC::convert(['程序员', '服务器'], 'SIMPLIFIED_TO_TAIWAN_WITH_PHRASE'); // output: ['程式設計師', '伺服器']
使用策略别名
use Overtrue\PHPOpenCC\OpenCC; use Overtrue\PHPOpenCC\Strategy; // 以下方法等价: // 方法 echo OpenCC::s2tw('服务器'); echo OpenCC::simplifiedToTaiwan('服务器'); // 字符串 echo OpenCC::convert('服务器', 's2tw'); echo OpenCC::convert('服务器', 'S2TW'); echo OpenCC::convert('服务器', 'SIMPLIFIED_TO_TAIWAN'); // 常量 echo OpenCC::convert('服务器', Strategy::S2TW); echo OpenCC::convert('服务器', Strategy::SIMPLIFIED_TO_TAIWAN);
流式/文件转换(可选)
use Overtrue\PHPOpenCC\StreamConverter; // 流到流 touch('out.txt'); $in = fopen('input.txt', 'rb'); $out = fopen('out.txt', 'wb'); StreamConverter::convertStream($in, $out, 'S2T'); // 文件到文件 StreamConverter::convertFile('input.txt', 'out.txt', 'S2TWP');
注意:按行转换不适用于跨行的词组替换场景。
转换策略
策略 (别名) | 说明 |
---|---|
SIMPLIFIED_TO_TRADITIONAL(S2T) |
简体到繁体 |
SIMPLIFIED_TO_HONGKONG(S2HK) |
简体到香港繁体 |
SIMPLIFIED_TO_JAPANESE(S2JP) |
简体到日文 |
SIMPLIFIED_TO_TAIWAN(S2TW) |
简体到台湾正体 |
SIMPLIFIED_TO_TAIWAN_WITH_PHRASE(2TWP) |
简体到台湾正体, 带词汇本地化 |
HONGKONG_TO_TRADITIONAL(HK2T) |
香港繁体到正体 |
HONGKONG_TO_SIMPLIFIED(HK2S) |
香港繁体到简体 |
TAIWAN_TO_SIMPLIFIED(TW2S) |
台湾正体到简体 |
TAIWAN_TO_TRADITIONAL(TW2T) |
台湾正体到繁体 |
TAIWAN_TO_SIMPLIFIED_WITH_PHRASE(TW2SP) |
台湾正体到简体, 带词汇本地化 |
TRADITIONAL_TO_HONGKONG(T2HK) |
正体到香港繁体 |
TRADITIONAL_TO_SIMPLIFIED(T2S) |
繁体到简体 |
TRADITIONAL_TO_TAIWAN(T2TW) |
繁体到台湾正体 |
TRADITIONAL_TO_JAPANESE(T2JP) |
繁体到日文 |
JAPANESE_TO_TRADITIONAL(JP2T) |
日文到繁体 |
JAPANESE_TO_SIMPLIFIED(JP2S) |
日文到简体 |
在命令行使用
php vendor/bin/opencc "汉字" s2tw
说明:
$ php vendor/bin/opencc --help Description: 中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。 Usage: convert <string> [<strategy>] Arguments: string 待转换的字符串 strategy 转换策略 [default: "SIMPLIFIED_TO_TRADITIONAL"]
性能与部署建议
- 强烈建议在生产环境开启并配置 Opcache,并将常用字典文件加入
opcache.preload
,可显著降低首次调用延迟。- 典型 php.ini 片段(示例):
opcache.enable=1 opcache.enable_cli=1 opcache.preload=/path/to/preload.php
preload.php
示例:<?php // 预加载常用字典,路径请根据实际部署调整 require __DIR__.'/vendor/autoload.php'; foreach ([ 'STPhrases','STCharacters','TWVariants','HKVariants','JPVariants', 'TSPhrases','TSCharacters','TWPhrases','TWVariantsRev','JPVariantsRev', ] as $name) { require __DIR__.'/vendor/overtrue/php-opencc/data/parsed/'.$name.'.php'; }
- 典型 php.ini 片段(示例):
- 本库会对字典进行“合并+按键长降序排序”的预处理并缓存于进程内存;在常驻进程(如 FPM、Swoole、RoadRunner)下复用效果更佳。
构建工具(可移植)
bin/opencc build
使用纯 PHP(ZipArchive
+ 递归拷贝)下载并解析 upstream 字典,无需系统级curl/unzip/cp
命令。- 需要的 PHP 扩展:
ext-zip
、ext-mbstring
。
❤️ 赞助我
如果你喜欢我的项目并想支持它,点击这里 ❤️
参与贡献
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- Contribute new features or update the wiki.
The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.
License
MIT