PHP overtrue/pinyin拓展实现汉字转拼音

慢慢来
慢慢来
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍了在 PHP 中利用 overtrue/pinyin 扩展库将中文文本转换为拼音的方法,涵盖从环境安装到核心功能调用的完整流程,包括无音调/有音调转换、URL 友好链接生成、首字母缩写提取以及特殊姓名读音处理。

准备条件:安装依赖

确保环境中已安装 Composer。在项目根目录下执行以下命令安装 overtrue/pinyin 包:

composer require overtrue/pinyin

简单使用与常见模式

该扩展提供了多种转换模式,适用于不同的业务场景。常见的常量模式如下:

  • PINYIN_TONE:保留声调(如 cè)
  • PINYIN_KEEP_NUMBER:保留数字原样
  • PINYIN_KEEP_ENGLISH:保留英文原样
  • PINYIN_KEEP_PUNCTUATION:保留标点符号
  • PINYIN_UMLAUT_V:将 ü / yu 替换为 v(常用于兼容旧系统或文件名)

第1步:将汉字转换为拼音数组

目的:获取每个汉字对应的独立拼音片段,便于逐字处理或数据库存储。
动作:实例化 Pinyin 类并调用 convert 方法。

(1) 默认情况(无音调、小写):

$pinyin = new Pinyin();
$result = $pinyin->convert('测试汉字转拼音');
// 输出:['ce', 'shi', 'han', 'zi', 'zhuan', 'pin', 'yin']

(2) 带声调输出:

$result = $pinyin->convert('测试汉字转拼音', PINYIN_TONE);
// 输出:['cè', 'shì', 'hàn', 'zì', 'zhuǎn', 'pīn', 'yīn']

(3) 处理“女”、“吕”等字的 v/yu 问题:

// 默认转为 lyu
$default = $pinyin->convert('吕氏春秋'); 
// ['lyu', 'shi', 'chun', 'qiu']

// 开启 PINYIN_UMLAUT_V 后转为 lv
$umlautV = $pinyin->convert('吕氏春秋', PINYIN_UMLAUT_V); 
// ['lv', 'shi', 'chun', 'qiu']

第2步:生成拼音字符串(用于 URL 或标识符)

目的:生成类似 test-hanzi-zhuan-pin-yin 的连续字符串,适合做短链接 Slug 或唯一 ID。
动作:使用 permalink 方法,第二个参数指定分隔符(默认为 -)。

$pinyin = new Pinyin();

// 默认以连字符分隔
$link1 = $pinyin->permalink('测试汉字转拼音');
// 输出:ce-shi-han-zi-zhuan-pin-yin

// 自定义使用点号分隔
$link2 = $pinyin->permalink('测试汉字转拼音', '.');
// 输出:ce.shi.han.zi.zhuan.pin.yin

第3步:提取首字母缩写

目的:获取汉字拼音的首字母组合,常用于快捷搜索索引或验证码显示。
动作:使用 abbr 方法。

$pinyin = new Pinyin();

// 默认紧密排列
$abbr1 = $pinyin->abbr('测试汉字转拼音');
// 输出:cshzzpy

// 可自定义分隔符
$abbr2 = $pinyin->abbr('测试汉字转拼音', '-');
// 输出:c-s-h-z-z-p-y

第4步:整段文本包含标点转拼音

目的:处理包含逗号、感叹号等标点的长文本,保持原文结构同时转换拼音部分。
动作:使用 sentence 方法。

$pinyin = new Pinyin();
$text = '测试汉字转拼音,这是测试!!!';

// 默认空格分隔拼音,保留标点
$sent1 = $pinyin->sentence($text);
// 输出:ce shi han zi zhuan pin yin, zhe shi ce shi!!!

// 连字符分隔拼音
$sent2 = $pinyin->sentence($text, '-');
// 输出:ce-shi-han-zi-zhuan-pin-yin,-zhe-shi-ce-shi!!!

第5步:处理多音字姓名

目的:某些汉字在作为人名时读音与普通词汇不同(如“仇”姓读 Qiu 而非 Chou)。
动作:使用 name 方法,内部通常会引入针对人名的词库进行优化。

$pinyin = new Pinyin();
$result = $pinyin->name('仇某某');
// 输出:['qiu', 'mou', 'mou']

以上就是php overtrue/pinyin拓展实现汉字转拼音的详细内容,更多关于php overtrue pinyin汉字转拼音的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表