tekintian / pinyin
完美的汉字转拼音工具,支持自定义映射、特殊字符处理和自动学习功能。
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/tekintian/pinyin
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpstan/phpstan: ^0.12.50
- phpunit/phpunit: ^8.5 || ^9.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2025-11-17 14:25:49 UTC
README
一个功能强大的汉字转拼音工具,支持自定义映射、特殊字符处理、自动学习功能和多音字处理。基于权威的Unihan数据库,提供完整的汉字拼音转换解决方案。
✨ 核心特性
- 🔤 精准转换 - 支持常用字和生僻字的准确拼音转换
- 🧠 智能学习 - 自动识别并记忆生僻字的拼音,支持自学习字典合并
- 🎛️ 多模式处理 - 三种特殊字符处理模式:
keep/delete/replace - 🔀 多音字识别 - 基于上下文的多音字智能处理
- 📚 完整字典系统 - 多级字典优先级,支持懒加载和内存优化
- ⚡ 高性能 - 多级缓存机制,支持高频字符快速转换
- 🔧 灵活配置 - 丰富的配置选项,满足不同使用场景
- 🔄 后台任务 - 完整的后台任务管理系统,支持守护进程模式
- 🌐 Unihan集成 - 基于Unicode权威数据库的拼音数据
📋 快速开始
安装
使用Composer安装:
composer require tekintian/pinyin
基本使用
use tekintian\pinyin\PinyinConverter; // 创建实例 $pinyinConverter = new PinyinConverter(); // 基本转换 $pinyin = $pinyinConverter->convert('你好,世界!'); echo $pinyin; // 输出: ni hao shi jie // 保留声调 $pinyinWithTone = $pinyinConverter->convert('你好,世界!', ' ', true); echo $pinyinWithTone; // 输出: nǐ hǎo shì jiè // 生成URL Slug $slug = $pinyinConverter->getUrlSlug('你好,世界!'); echo $slug; // 输出: ni-hao-shi-jie
🏗️ 项目架构
字典优先级系统
从高到低依次为:
- custom_xxx - 自定义字典(用户自定义映射)
- polyphone_xxx - 多音字规则字典
- common_xxx - 常用字典
- rare_xxx - 生僻字字典
- unihan - Unihan字典(基于权威Unicode数据库)
核心模块
src/PinyinConverter.php- 主转换器类,提供核心转换功能src/BackgroundTaskManager.php- 后台任务管理器bin/task_runner.php- 统一任务运行器(支持守护进程模式)unicode/- Unihan数据管理和处理工具tools/- 辅助工具集(自动获取、测试、解析等)
🚀 高级功能
后台任务管理
# 守护进程模式(推荐生产环境) php bin/task_runner.php -m daemon -i 60 # 批量处理模式 php bin/task_runner.php -m batch -b 100 -l 500 # 一次性执行模式 php bin/task_runner.php -m once
Unihan数据管理
use tekintian\pinyin\unicode\UnihanDataManager; $manager = new UnihanDataManager(); // 更新Unihan数据 $updated = $manager->updateData(); // 生成数据报告 $report = $manager->generateReport();
特殊字符处理
// keep模式:保留所有特殊字符 $result = $converter->convert('你好$世界', ' ', false, 'keep'); // delete模式:删除非安全字符 $result = $converter->convert('你好$世界', ' ', false, 'delete'); // replace模式:自定义替换 $result = $converter->convert('你好$世界', ' ', false, [ 'mode' => 'replace', 'map' => ['$' => 'dollar'] ]);
📊 数据统计
Unihan字典覆盖
| 区块 | 字符数量 | 说明 |
|---|---|---|
| CJK基本汉字 | 20,924 | 常用汉字 |
| CJK扩展A区 | 5,786 | 扩展A区生僻字 |
| CJK扩展B区 | 14,614 | 扩展B区生僻字 |
| CJK扩展C区 | 506 | 扩展C区生僻字 |
| CJK扩展D区 | 222 | 扩展D区生僻字 |
| CJK扩展E区 | 5,762 | 扩展E区生僻字 |
| CJK扩展F区 | 7,473 | 扩展F区生僻字 |
| CJK扩展G区 | 4,939 | 扩展G区生僻字 |
总计: 超过 60,000 个汉字的完整拼音覆盖
📚 详细文档
- 📖 项目架构和使用指南 - 完整的项目架构说明和使用方法
- 🔧 工具使用手册 - 所有工具的使用方法和示例
- 📊 数据字典说明 - 字典系统的详细说明
- 🔄 后台任务管理 - 后台任务系统的使用指南
- 🌐 Unihan数据处理 - Unihan数据管理工具说明
⚙️ 配置选项
$config = [ 'dict' => [ // 字典文件路径配置 ], 'dict_loading' => [ 'strategy' => 'both', // 字典加载策略 'lazy_loading' => true, // 懒加载开关 'preload_priority' => ['custom', 'common'], // 预加载优先级 ], 'custom_dict_persistence' => [ 'enable' => true, // 自定义字典持久化 'delay_write' => true, // 延迟写入 'auto_save_interval' => 300 // 自动保存间隔(秒) ] ]; $pinyinConverter = new PinyinConverter($config);
🧪 测试
运行测试:
# 快速测试 php tools/quick_pinyin_test.php # 运行完整测试套件 composer test
🔄 开发计划
✅ 已完成功能
- 基础汉字转拼音功能
- 多音字处理
- 自学习字典系统
- 后台任务管理
- Unihan数据集成
- 完整的工具集
🔜 计划功能
- 更智能的多音字上下文识别
- 分布式任务处理支持
- Web界面管理工具
- 更多拼音数据源集成
🤝 贡献指南
欢迎贡献代码!请阅读:
📄 许可证
本项目使用MIT许可证,详情请查看LICENSE文件。
🔗 相关链接
版本: 1.0.0
最后更新: 2025-11-16
维护者: tekintian https://dev.tekin.cn