中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。基于 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.
MIT