首页
统计
友链
留言
Search
1
php解答leetcode第7题- 整数反转
2,753 阅读
2
Windows下搭建Laravel开发环境~homestead
2,749 阅读
3
基于php的sphinx和coreseek全文搜索,中文分词(一)
2,577 阅读
4
Laravel 安装 jwt 及基本使用
2,355 阅读
5
php解答leetcode第26题-删除排序数组中的重复项
1,947 阅读
PHP
laravel
svn
nginx
leetcode
算法
Golang
登录
Search
标签搜索
设计模式
leetcode
laravel
sphinx
coreseek
全文搜索
中文分词
compsoer
svn
centos
jwt
homestead
算法
php
yangpanyao
累计撰写
45
篇文章
累计收到
76
条评论
首页
栏目
PHP
laravel
svn
nginx
leetcode
算法
Golang
页面
统计
友链
留言
搜索到
1
篇与
php
的结果
2019-08-28
分享一个汉字转拼音的PHP扩展包
最近捣鼓了通过调高德地图行政区划api来获取城市信息的小demo,但做的项目有一个功能要求通过城市首字母区分城市的功能类似于这样:首先我想的是通过PHP来解决实现原理是获取汉字的ASCII码通过对比判断然后返回汉字的首字母获取首字母代码如下:function getFirstCharter($str) { $str = mb_convert_encoding($str, 'gb2312','UTF-8');// 如果程序是gbk的,此行就要注释掉 if (preg_match("/^[\x7f-\xff]/", $str)) { $fchar = ord($str { 0}); if ($fchar >= ord("A") and $fchar <= ord("z")) return strtoupper($str { 0}); $a = $str; $val = ord($a { 0}) * 256 + ord($a { 1}) - 65536; if ($val >= -20319 and $val <= -20284) return "A"; if ($val >= -20283 and $val <= -19776) return "B"; if ($val >= -19775 and $val <= -19219) return "C"; if ($val >= -19218 and $val <= -18711) return "D"; if ($val >= -18710 and $val <= -18527) return "E"; if ($val >= -18526 and $val <= -18240) return "F"; if ($val >= -18239 and $val <= -17923) return "G"; if ($val >= -17922 and $val <= -17418) return "H"; if ($val >= -17417 and $val <= -16475) return "J"; if ($val >= -16474 and $val <= -16213) return "K"; if ($val >= -16212 and $val <= -15641) return "L"; if ($val >= -15640 and $val <= -15166) return "M"; if ($val >= -15165 and $val <= -14923) return "N"; if ($val >= -14922 and $val <= -14915) return "O"; if ($val >= -14914 and $val <= -14631) return "P"; if ($val >= -14630 and $val <= -14150) return "Q"; if ($val >= -14149 and $val <= -14091) return "R"; if ($val >= -14090 and $val <= -13319) return "S"; if ($val >= -13318 and $val <= -12839) return "T"; if ($val >= -12838 and $val <= -12557) return "W"; if ($val >= -12556 and $val <= -11848) return "X"; if ($val >= -11847 and $val <= -11056) return "Y"; if ($val >= -11055 and $val <= -10247) return "Z"; } else { return false; } } 最后检查数据结果有很多的数据首字母获取为空:例如(展示部分发现这种方法并不是很好 很多生僻一点的字的首字母并没有获取到SO,只好放弃另谋他路终于在强大的GitHub上看到了这个好东西Github地址:https://github.com/overtrue/pinyin安装使用 Composer 安装:composer require "overtrue/pinyin:~4.0"使用内存型,适用于服务器内存空间较富余,优点:转换快小内存型(默认),适用于内存比较紧张的环境,优点:占用内存小,转换不如内存型快I/O型,适用于虚拟机,内存限制比较严格环境。优点:非常微小内存消耗。缺点:转换慢,不如内存型转换快,php >= 5.5可用选项:选项作用PINYIN_TONEUNICODE 式音调:měi hǎoPINYIN_ASCII_TONE带数字式音调:mei3 hao3PINYIN_NO_TONE无音调:mei haoPINYIN_KEEP_NUMBER保留数字PINYIN_KEEP_ENGLISH保留英文PINYIN_KEEP_PUNCTUATION保留标点PINYIN_UMLAUT_V使用v代替yu, 例如:吕lyu将会转为lv示例:use Overtrue\Pinyin\Pinyin; // 小内存型 $pinyin = new Pinyin(); // 默认 // 内存型 // $pinyin = new Pinyin('Overtrue\Pinyin\MemoryFileDictLoader'); // I/O型 // $pinyin = new Pinyin('Overtrue\Pinyin\GeneratorFileDictLoader'); //返回拼音数组形式 $pinyin->convert('带着希望去旅行,比到达终点更美好'); // ["dai", "zhe", "xi", "wang", "qu", "lyu", "xing", "bi", "dao", "da", "zhong", "dian", "geng", "mei", "hao"] //返回拼音调式拼音数组 $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_TONE); // ["dài","zhe","xī","wàng","qù","lǚ","xíng","bǐ","dào","dá","zhōng","diǎn","gèng","měi","hǎo"] //返回带数字音调数组 $pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_ASCII_TONE); //["dai4","zhe","xi1","wang4","qu4","lyu3","xing2","bi3","dao4","da2","zhong1","dian3","geng4","mei3","hao3"] //生成用于链接的拼音字符串 $pinyin->permalink('带着希望去旅行'); // dai-zhe-xi-wang-qu-lyu-xing $pinyin->permalink('带着希望去旅行', '.'); // dai.zhe.xi.wang.qu.lyu.xing //返回首字符字符串 $pinyin->abbr('带着希望去旅行'); // dzxwqlx $pinyin->abbr('带着希望去旅行', '-'); // d-z-x-w-q-l-x $pinyin->abbr('你好2018!', PINYIN_KEEP_NUMBER); // nh2018 $pinyin->abbr('Happy New Year! 2018!', PINYIN_KEEP_ENGLISH); // HNY2018 //翻译整段文字为拼音 $pinyin->sentence('带着希望去旅行,比到达终点更美好!'); // dai zhe xi wang qu lyu xing, bi dao da zhong dian geng mei hao! $pinyin->sentence('带着希望去旅行,比到达终点更美好!', PINYIN_TONE); // dài zhe xī wàng qù lǚ xíng, bǐ dào dá zhōng diǎn gèng měi hǎo! //翻译姓名 $pinyin->name('单某某'); // ['shan', 'mou', 'mou'] $pinyin->name('单某某', PINYIN_TONE); // ["shàn","mǒu","mǒu"]实战:生僻字获取 首先我从百度上找了一些生僻字猋(biao)麤(cu)掱(pa)赑(bi)焺(sheng)翾(xuan) $pinyin = new Pinyin(); $pinyin = new Pinyin(); //输出带连接符的拼音字符串 echo $pinyin->permalink('猋麤掱赑焺翾'); echo "<br>"; //输出首字母字符串 echo $pinyin->abbr('猋麤掱赑焺翾'); 运行发现生僻字转拼音无压力 借此将这个扩展包推荐给大家
2019年08月28日
542 阅读
0 评论
0 点赞