Skip to content

中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。

License

Notifications You must be signed in to change notification settings

overtrue/php-opencc

Repository files navigation

PHP OpenCC

中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。基于 BYVoid/OpenCC 数据实现。

Build Status Latest Stable Version Total Downloads License

安装

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';
      }
  • 本库会对字典进行“合并+按键长降序排序”的预处理并缓存于进程内存;在常驻进程(如 FPM、Swoole、RoadRunner)下复用效果更佳。

构建工具(可移植)

  • bin/opencc build 使用纯 PHP(ZipArchive + 递归拷贝)下载并解析 upstream 字典,无需系统级 curl/unzip/cp 命令。
  • 需要的 PHP 扩展:ext-zipext-mbstring

❤️ 赞助我

如果你喜欢我的项目并想支持它,点击这里 ❤️

参与贡献

You can contribute in one of three ways:

  1. File bug reports using the issue tracker.
  2. Answer questions or fix bugs on the issue tracker.
  3. 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

About

中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 2

  •  
  •  

Languages