Table Of Contents

m

全干工程师

最快速的PHP中文汉字转拼音方法?

汉字转拼音的需求,我们在业务中经常会遇到。在直接使用PHP转拼音的话,在性能上不是很理想的。现有的库都是将汉字拼音映射成map结构存在文件中。在使用中我们需要include来加载这个文件内存会瀑涨,这个map随着维护也是会越来越大。如果想使用更快速转换,我们可以为些编写PHP扩展程序,但是这个成本太高了。在PHP 7.4以后我们可以使用另外一种方式来实现这个功能,就是使用FFI功能。你可以使用CC++Rust编写程序来导出c接口库供PHP调用。目前我已经实现了类似功能的库,我们可以直接调用。下面将是一些该库的使用方法:

安装

[root#~] composer require meshell/ffi-pinyin  

PHP 版本必须是7.4以上

使用

使用方式有很多种无音标、正常音标、数字音标、数字音标结尾、首字母模式。提供多个参数控制结果:跳过未识别字符,多音处理,分隔符,不分隔未识别字符

  • 无音标模式
  
$pinyin = FastFFI\Pinyin\Pinyin::new();  
  
echo $pinyin->plain("无音标模式");  
  • 音标模式
  
$pinyin = FastFFI\Pinyin\Pinyin::new();  
  
echo $pinyin->tone("音标模式");  
  • 数字音标模式
  
$pinyin = FastFFI\Pinyin\Pinyin::new();  
  
echo $pinyin->toneNum("数字音标模式");  
  • 数字音标结尾模式
  
$pinyin = FastFFI\Pinyin\Pinyin::new();  
  
echo $pinyin->toneNumEnd("数字音标结尾模式");  
  • 首字母模式
  
$pinyin = FastFFI\Pinyin\Pinyin::new();  
  
echo $pinyin->letter("首字母模式");  
  • 参数控制
  
$pinyin = FastFFI\Pinyin\Pinyin::new();  
  
echo $pinyin->plain("参数控制", true, false, '-', true);  

第一个参数:需要转换的字符串
第二个参数:是否跳过未识别字符
第三个参数:是否多音字处理
第四个参数:分隔符
第五个参数:是否不分隔未识别字符,只有第二个参数false是才生效

留言