[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8398":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":22,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":28,"discoverSource":29},8398,"pinyin","overtrue\u002Fpinyin","overtrue","🇨🇳 基于词库的中文转拼音优质解决方案","https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin",null,"PHP",4457,763,144,0,2,5,62.15,"MIT License",false,"master",true,[24,5],"php","2026-06-12 04:00:39","# Pinyin\n\n[![Test](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin\u002Factions\u002Fworkflows\u002Ftest.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin\u002Factions\u002Fworkflows\u002Ftest.yml)\n[![Latest Stable Version](https:\u002F\u002Fposer.pugx.org\u002Fovertrue\u002Fpinyin\u002Fv\u002Fstable.svg)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fovertrue\u002Fpinyin) [![Total Downloads](https:\u002F\u002Fposer.pugx.org\u002Fovertrue\u002Fpinyin\u002Fdownloads.svg)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fovertrue\u002Fpinyin) [![Latest Unstable Version](https:\u002F\u002Fposer.pugx.org\u002Fovertrue\u002Fpinyin\u002Fv\u002Funstable.svg)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fovertrue\u002Fpinyin) [![License](https:\u002F\u002Fposer.pugx.org\u002Fovertrue\u002Fpinyin\u002Flicense.svg)](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fovertrue\u002Fpinyin)\n\n:cn: 基于 [mozillazg\u002Fpinyin-data](https:\u002F\u002Fgithub.com\u002Fmozillazg\u002Fpinyin-data) 词典的中文转拼音工具，更准确的支持多音字的汉字转拼音解决方案。\n\n[喜欢我的项目？点击这里支持我](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fovertrue)\n\n## 特性\n\n- 准确的多音字支持\n- 多种拼音风格（声调符号、数字声调、无声调）\n- 支持姓氏识别\n- 灵活的性能优化策略\n- 内存友好的设计\n- 完善的测试覆盖\n\n## 安装\n\n使用 Composer 安装:\n\n```bash\ncomposer require overtrue\u002Fpinyin:^6.0\n```\n\n## 使用\n\n### 拼音风格\n\n除了获取首字母的方法外，所有方法都支持第二个参数，用于指定拼音的格式，可选值为：\n\n- `symbol` （默认）声调符号，例如 `pīn yīn`\n- `none` 不输出声调，例如 `pin yin`\n- `number` 末尾数字模式的拼音，例如 `pin1 yin1`\n\n你可以使用字符串值或者 `ToneStyle` 枚举：\n\n```php\nuse Overtrue\\Pinyin\\Pinyin;\nuse Overtrue\\Pinyin\\ToneStyle;\n\n\u002F\u002F 使用字符串\necho Pinyin::sentence('你好', 'none');       \u002F\u002F ni hao\necho Pinyin::sentence('你好', 'number');     \u002F\u002F ni3 hao3\necho Pinyin::sentence('你好', 'symbol');     \u002F\u002F nǐ hǎo\n\n\u002F\u002F 使用枚举（推荐）\necho Pinyin::sentence('你好', ToneStyle::NONE);   \u002F\u002F ni hao\necho Pinyin::sentence('你好', ToneStyle::NUMBER); \u002F\u002F ni3 hao3\necho Pinyin::sentence('你好', ToneStyle::SYMBOL); \u002F\u002F nǐ hǎo\n```\n\n### 返回值\n\n除了 `permalink` 返回字符串外，其它方法都返回集合类型 [`Overtrue\\Pinyin\\Collection`](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin\u002Fblob\u002Fmaster\u002Fsrc\u002FCollection.php)：\n\n```php\nuse Overtrue\\Pinyin\\Pinyin;\n\n$pinyin = Pinyin::sentence('你好，世界');\n```\n\n你可以通过以下方式访问集合内容:\n\n```php\necho $pinyin; \u002F\u002F nǐ hǎo shì jiè\n\n\u002F\u002F 直接将对象转成字符串\n$string = (string) $pinyin; \u002F\u002F nǐ hǎo shì jiè\n\n$pinyin->toArray(); \u002F\u002F ['nǐ', 'hǎo', 'shì', 'jiè']\n\n\u002F\u002F 直接使用索引访问\n$pinyin[0]; \u002F\u002F 'nǐ'\n\n\u002F\u002F 使用函数遍历\n$pinyin->map('ucfirst'); \u002F\u002F ['Nǐ', 'Hǎo', 'Shì', 'Jiè']\n\n\u002F\u002F 拼接为字符串\n$pinyin->join(' '); \u002F\u002F 'nǐ hǎo shì jiè'\n$pinyin->join('-'); \u002F\u002F 'nǐ-hǎo-shì-jiè'\n\n\u002F\u002F 转成 json\n$pinyin->toJson(); \u002F\u002F '[\"nǐ\",\"hǎo\",\"shì\",\"jiè\"]'\njson_encode($pinyin); \u002F\u002F '[\"nǐ\",\"hǎo\",\"shì\",\"jiè\"]'\n```\n\n### 文字段落转拼音\n\n```php\nuse Overtrue\\Pinyin\\Pinyin;\nuse Overtrue\\Pinyin\\ToneStyle;\n\necho Pinyin::sentence('带着希望去旅行，比到达终点更美好');\n\u002F\u002F dài zhe xī wàng qù lǚ xíng ， bǐ dào dá zhōng diǎn gèng měi hǎo\n\n\u002F\u002F 去除声调\necho Pinyin::sentence('带着希望去旅行，比到达终点更美好', ToneStyle::NONE);\n\u002F\u002F dai zhe xi wang qu lv xing ， bi dao da zhong dian geng mei hao\n\n\u002F\u002F 保留所有非汉字字符\necho Pinyin::fullSentence('ル是片假名，π是希腊字母', ToneStyle::NONE);\n\u002F\u002F ル shi pian jia ming ，π shi xi la zi mu\n```\n\n### 生成用于链接的拼音字符串\n\n通常用于文章链接等，可以使用 `permalink` 方法获取拼音字符串：\n\n```php\necho Pinyin::permalink('带着希望去旅行'); \u002F\u002F dai-zhe-xi-wang-qu-lyu-xing\necho Pinyin::permalink('带着希望去旅行', '.'); \u002F\u002F dai.zhe.xi.wang.qu.lyu.xing\n```\n\n### 获取首字符字符串\n\n通常用于创建搜索用的索引，可以使用 `abbr` 方法转换：\n\n```php\nPinyin::abbr('带着希望去旅行'); \u002F\u002F ['d', 'z', 'x', 'w', 'q', 'l', 'x']\necho Pinyin::abbr('带着希望去旅行')->join('-'); \u002F\u002F d-z-x-w-q-l-x\necho Pinyin::abbr('你好2018！')->join(''); \u002F\u002F nh2018\necho Pinyin::abbr('Happy New Year! 2018！')->join(''); \u002F\u002F HNY2018\n\n\u002F\u002F 保留原字符串的英文单词\necho Pinyin::abbr('CGV电影院', false, true)->join(''); \u002F\u002F CGVdyy\n```\n\n**姓名首字母**\n\n将首字作为姓氏转换，其余作为普通词语转换：\n\n```php\nPinyin::nameAbbr('欧阳'); \u002F\u002F ['o', 'y']\necho Pinyin::nameAbbr('单单单')->join('-'); \u002F\u002F s-d-d\n```\n\n### 姓名转换\n\n姓名的姓的读音有些与普通字不一样，比如 ‘单’ 常见的音为 `dan`，而作为姓的时候读 `shan`。\n\n```php\nPinyin::name('单某某'); \u002F\u002F ['shàn', 'mǒu', 'mǒu']\nPinyin::name('单某某', 'none'); \u002F\u002F ['shan', 'mou', 'mou']\nPinyin::name('单某某', 'none')->join('-'); \u002F\u002F shan-mou-mou\n```\n\n### 护照姓名转换\n\n根据国家规定 [关于中国护照旅行证上姓名拼音 ü（吕、律、闾、绿、女等）统一拼写为 YU 的提醒](http:\u002F\u002Fsg.china-embassy.gov.cn\u002Flsfw\u002Fzghz1\u002Fhzzxdt\u002F201501\u002Ft20150122_2022198.htm) 的规则，将 `ü` 转换为 `yu`：\n\n```php\nPinyin::passportName('吕小布'); \u002F\u002F ['lyu', 'xiao', 'bu']\nPinyin::passportName('女小花'); \u002F\u002F ['nyu', 'xiao', 'hua']\nPinyin::passportName('律师'); \u002F\u002F ['lyu', 'shi']\n```\n\n### 多音字\n\n多音字的返回值为关联数组的集合，默认返回去重后的所有读音：\n\n```php\n$pinyin = Pinyin::heteronym('重庆');\n\n$pinyin['重']; \u002F\u002F [\"zhòng\", \"chóng\", \"tóng\"]\n$pinyin['庆']; \u002F\u002F [\"qìng\"]\n\n$pinyin->toArray();\n\u002F\u002F [\n\u002F\u002F     \"重\": [\"zhòng\", \"chóng\", \"tóng\"],\n\u002F\u002F     \"庆\": [\"qìng\"]\n\u002F\u002F ]\n```\n\n如果不想要去重，可以数组形式返回：\n\n```php\n$pinyin = Pinyin::heteronym('重庆重庆', ToneStyle::SYMBOL, true);\n\n\u002F\u002F or\n$pinyin = Pinyin::heteronymAsList('重庆重庆', ToneStyle::SYMBOL);\n\n$pinyin->toArray();\n\u002F\u002F [\n\u002F\u002F     [\"重\" => [\"zhòng\", \"chóng\", \"tóng\"]],\n\u002F\u002F     [\"庆\" => [\"qìng\"]],\n\u002F\u002F     [\"重\" => [\"zhòng\", \"chóng\", \"tóng\"]],\n\u002F\u002F     [\"庆\" => [\"qìng\"]]\n\u002F\u002F ]\n```\n\n### 单字转拼音\n\n和多音字类似，单字的返回值为字符串，多音字将根据该字字频调整得到常用音：\n\n```php\n$pinyin = Pinyin::chars('重庆');\n\necho $pinyin['重']; \u002F\u002F \"zhòng\"\necho $pinyin['庆']; \u002F\u002F \"qìng\"\n\n$pinyin->toArray();\n\u002F\u002F [\n\u002F\u002F     \"重\": \"zhòng\",\n\u002F\u002F     \"庆\": \"qìng\"\n\u002F\u002F ]\n```\n\n> **Warning**\n>\n> 当单字处理时由于多音字来自词频表中取得常用音，所以在词语环境下可能出现不正确的情况，建议使用多音字处理。\n\n## 性能优化策略 🚀\n\nv6.0+ 版本提供了三种不同的转换策略，以适应不同的使用场景：\n\n### 1. 内存优化策略（Memory Optimized）- 默认\n- **内存占用**：~400KB\n- **适用场景**：Web 请求、内存受限环境\n- **特点**：每次加载一个词典段，用完即释放\n\n```php\nuse Overtrue\\Pinyin\\Pinyin;\n\n\u002F\u002F 使用内存优化策略（默认）\nPinyin::useMemoryOptimized();\n$result = Pinyin::sentence('你好世界');\necho $result; \u002F\u002F nǐ hǎo shì jiè\n```\n\n### 2. 缓存策略（Cached）\n- **内存占用**：~4MB\n- **适用场景**：批处理、长时运行进程\n- **特点**：缓存所有词典数据，重复转换速度提升 2-3 倍\n\n```php\n\u002F\u002F 使用缓存策略\nPinyin::useCached();\n\n\u002F\u002F 批量处理时性能更好\nforeach ($largeDataset as $text) {\n    $result = Pinyin::sentence($text);\n    echo $result . \"\\n\";\n}\n\n\u002F\u002F 清理缓存（可选）\n\\Overtrue\\Pinyin\\Converters\\CachedConverter::clearCache();\n```\n\n### 3. 智能策略（Smart）\n- **内存占用**：600KB-1.5MB\n- **适用场景**：通用场景、自动优化\n- **特点**：根据文本长度智能选择加载策略\n\n```php\n\u002F\u002F 使用智能策略\nPinyin::useSmart();\n\n\u002F\u002F 短文本自动优化\n$result1 = Pinyin::sentence('你好');  \u002F\u002F 跳过长词词典\necho $result1; \u002F\u002F nǐ hǎo\n\n\u002F\u002F 长文本自动调整\n$result2 = Pinyin::sentence($longText);  \u002F\u002F 加载必要的词典\necho $result2;\n```\n\n### 自动选择策略\n\n```php\n\u002F\u002F 根据运行环境自动选择最佳策略\nPinyin::useAutoStrategy();\n\n\u002F\u002F 获取推荐策略信息\n$recommended = \\Overtrue\\Pinyin\\ConverterFactory::recommend();\necho \"推荐策略: {$recommended}\";\n```\n\n### 直接使用 Converter\n\n```php\nuse Overtrue\\Pinyin\\ConverterFactory;\n\n\u002F\u002F 创建特定策略的转换器\n$converter = ConverterFactory::make('cached');\n$result = $converter->convert('你好世界');\necho $result; \u002F\u002F nǐ hǎo shì jiè\n\n\u002F\u002F 监控内存使用情况\n$initialMemory = memory_get_usage();\n$converter->convert('测试文本');\n$memoryGrowth = memory_get_usage() - $initialMemory;\necho \"内存增长: \" . round($memoryGrowth \u002F 1024, 2) . \" KB\";\n```\n\n### 性能对比\n\n| 策略 | 内存占用 | 首次转换 | 重复转换 | 推荐场景 |\n|-----|---------|---------|---------|---------|\n| Memory Optimized | ~400KB | 中等 | 中等 | Web 请求 |\n| Cached | ~4MB | 慢 | **最快** | 批处理 |\n| Smart | 600KB-1.5MB | 快 | 快 | 通用场景 |\n\n运行基准测试查看实际性能：\n```bash\n# 运行标准基准测试\nphp benchmark\u002Frun.php\n\n# 详细的策略对比测试\nphp benchmark\u002Fcompare-strategies.php\n```\n\n## 性能优化最佳实践\n\n### 选择合适的策略\n\n根据您的使用场景选择最合适的转换策略：\n\n#### Web 应用（Laravel、Symfony 等）\n```php\n\u002F\u002F 在应用启动时设置\nPinyin::useMemoryOptimized(); \u002F\u002F 默认策略，内存占用最小\n\n\u002F\u002F 或在 ServiceProvider 中配置\npublic function boot()\n{\n    Pinyin::useMemoryOptimized();\n}\n```\n\n#### CLI 批处理脚本\n```php\n\u002F\u002F 处理大量数据时使用缓存策略\nPinyin::useCached();\n\n$results = [];\nforeach ($thousandsOfTexts as $text) {\n    $results[] = Pinyin::sentence($text);\n}\n\n\u002F\u002F 处理完成后清理缓存\n\\Overtrue\\Pinyin\\Converters\\CachedConverter::clearCache();\n```\n\n#### 队列任务处理\n```php\nclass ConvertPinyinJob implements ShouldQueue\n{\n    public function handle()\n    {\n        \u002F\u002F 队列任务中使用智能策略\n        Pinyin::useSmart();\n\n        \u002F\u002F 处理任务...\n    }\n}\n```\n\n### 性能监控\n\n```php\nuse Overtrue\\Pinyin\\ConverterFactory;\n\n\u002F\u002F 监控不同策略的内存使用情况\n$strategies = ['memory', 'cached', 'smart'];\nforeach ($strategies as $strategy) {\n    $converter = ConverterFactory::make($strategy);\n\n    $initialMemory = memory_get_usage();\n    $converter->convert('测试文本');\n    $memoryGrowth = memory_get_usage() - $initialMemory;\n\n    echo \"策略: {$strategy}, 内存增长: \" . round($memoryGrowth \u002F 1024, 2) . \" KB\" . PHP_EOL;\n}\n```\n\n### 基准测试\n\n项目提供了多个基准测试工具：\n\n```bash\n# 运行标准基准测试\nphp benchmark\u002Frun.php\n\n# 详细的策略对比\nphp benchmark\u002Fcompare-strategies.php\n```\n\n基准测试会显示不同策略的性能对比，包括：\n- 内存使用情况\n- 转换速度\n- 不同文本长度的性能表现\n\n### 内存管理建议\n\n1. **生产环境**：使用 `Memory Optimized` 策略，避免内存泄漏\n2. **开发环境**：可以使用 `Smart` 策略，平衡性能和内存\n3. **批处理任务**：使用 `Cached` 策略，处理完成后调用 `clearCache()`\n4. **内存受限环境**：严格使用 `Memory Optimized` 策略\n\n### 性能对比数据\n\n基于 1000 次转换的基准测试结果：\n\n| 场景 | Memory Optimized | Cached | Smart |\n|-----|-----------------|--------|-------|\n| 短文本（\u003C10字） | 1.2ms | 0.5ms | 0.8ms |\n| 中等文本（10-50字） | 3.5ms | 1.2ms | 2.1ms |\n| 长文本（>100字） | 8.7ms | 3.1ms | 5.2ms |\n| 内存占用 | 400KB | 4MB | 1.5MB |\n\n> 💡 **提示**：缓存策略在重复转换时性能提升约 2-3 倍，但会占用更多内存。\n\n## v\u002Fyu\u002Fü 的问题\n\n根据国家语言文字工作委员会的规定，`lv`、`lyu`、`lǚ` 都是正确的，但是 `lv` 是最常用的，所以默认使用 `lv`，如果你需要使用其他的，可以在初始化时传入：\n\n```php\necho Pinyin::sentence('旅行');\n\u002F\u002F lǚ xíng\n\necho Pinyin::sentence('旅行', 'none');\n\u002F\u002F lv xing\n\necho Pinyin::yuToYu()->sentence('旅行', 'none');\n\u002F\u002F lyu xing\n\necho Pinyin::yuToU()->sentence('旅行', 'none');\n\u002F\u002F lu xing\n\necho Pinyin::yuToV()->sentence('旅行', 'none');\n\u002F\u002F lv xing\n```\n\n> **Warning**\n>\n> 仅在拼音风格为非 `symbol` 模式下有效。\n\n## 命令行工具\n\n你可以使用命令行来实现拼音的转换：\n\n```bash\nphp .\u002Fbin\u002Fpinyin 带着希望去旅行 --method=sentence --tone-style=symbol\n# dài zhe xī wàng qù lǚ xíng\n```\n\n更多使用方法，可以查看帮助文档：\n\n```bash\nphp .\u002Fbin\u002Fpinyin --help\n\n# Usage:\n#     .\u002Fpinyin [chinese] [method] [options]\n# Options:\n#     -j, --json               输出 JSON 格式.\n#     -c, --compact            不格式化输出 JSON.\n#     -m, --method=[method]    转换方式，可选：sentence\u002FfullSentence\u002Fname\u002FpassportName\u002Fphrase\u002Fpermalink\u002Fheteronym\u002FheteronymAsList\u002Fchars\u002Fabbr\u002FnameAbbr.\n#     --no-tone                不使用音调.\n#     --tone-style=[style]     音调风格，可选值：symbol\u002Fnone\u002Fnumber, default: none.\n#     -h, --help               显示帮助.\n```\n\n### 命令行工具示例\n\n```bash\n# 基本转换\nphp .\u002Fbin\u002Fpinyin \"你好世界\"\n# ni hao shi jie\n\n# 指定音调风格\nphp .\u002Fbin\u002Fpinyin \"你好世界\" --tone-style=symbol\n# nǐ hǎo shì jiè\n\nphp .\u002Fbin\u002Fpinyin \"你好世界\" --tone-style=number\n# ni3 hao3 shi4 jie4\n\n# 生成链接格式\nphp .\u002Fbin\u002Fpinyin \"带着希望去旅行\" --method=permalink\n# dai-zhe-xi-wang-qu-lv-xing\n\n# 获取首字母\nphp .\u002Fbin\u002Fpinyin \"带着希望去旅行\" --method=abbr\n# d z x w q l x\n\n# 多音字转换（JSON格式）\nphp .\u002Fbin\u002Fpinyin \"重庆\" --method=heteronym --json\n# {\"重\":[\"zhong\",\"chong\",\"tong\"],\"庆\":[\"qing\"]}\n\n# 姓名转换\nphp .\u002Fbin\u002Fpinyin \"欧阳修\" --method=name\n# ou yang xiu\n```\n\n## 在 Laravel 中使用\n\n独立的包在这里：[overtrue\u002Flaravel-pinyin](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Flaravel-pinyin)\n\n## 中文简繁转换\n\n如何你有这个需求，也可以了解我的另一个包：[overtrue\u002Fphp-opencc](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fphp-opencc)\n\n## Contribution\n\n欢迎提意见及完善补充词库：\n\n- 单字拼音错误请添加到：[sources\u002Fpathes\u002Fchars.txt](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin\u002Fblob\u002Fmaster\u002Fsources\u002Fpathes\u002Fchars.txt)；\n- 词语错误或补齐，请添加到：[sources\u002Fpathes\u002Fwords.txt](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin\u002Fblob\u002Fmaster\u002Fsources\u002Fpathes\u002Fwords.txt)；\n\n## 参考\n\n- [mozillazg\u002Fpinyin-data](https:\u002F\u002Fgithub.com\u002Fmozillazg\u002Fpinyin-data)\n- [overtrue\u002Fpinyin-resources](https:\u002F\u002Fgithub.com\u002Fovertrue\u002Fpinyin-resources)\n\n## :heart: Sponsor me\n\n如果你喜欢我的项目并想支持它，[点击这里 :heart:](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fovertrue)\n\n## PHP 扩展包开发\n\n> 想知道如何从零开始构建 PHP 扩展包？\n>\n> 请关注我的实战课程，我会在此课程中分享一些扩展开发经验 —— [《PHP 扩展包实战教程 - 从入门到发布》](https:\u002F\u002Flearnku.com\u002Fcourses\u002Fcreating-package)\n\n# License\n\nMIT\n","overtrue\u002Fpinyin 是一个基于词库的中文转拼音解决方案，使用 PHP 语言开发。该项目通过准确支持多音字、提供多种拼音风格（如声调符号、数字声调、无声调）以及姓氏识别等功能，确保了转换结果的高度准确性与灵活性。它还具有内存友好的设计和完善的测试覆盖，保证了其在性能上的优越性。适用于需要将中文文本转换为拼音的各种场景，例如搜索引擎优化、国际化应用开发等。","2026-06-11 03:17:46","top_language"]