巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自适应+智能链词等功效功效概况
赞助文档Help

PHP基于ICU扩展intl疾速完成汉字转拼音及按拼音首字母分组排序的体例

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-25 14:41:33 阅读数: 157

本文实例报告了PHP基于ICU扩展intl疾速完成汉字转拼音及按拼音首字母分组排序的体例。分享给大师供大师参考,详细以下:

ICU(International Components for Unicode)里供给了transliterator(直译器),
能够或许很便利把其余说话(比方简体中文)转为拉丁文表现:
http://cn2.php.net/manual/zh/transliterator.transliterate.php
Transliterator: allows getting latin representation of strings in various languages.

<?php
//文件编码请求是Unicode
header("Content-Type: text/html; charset=utf-8");
echo transliterator_transliterate("Any-Latin", "中华无为");
//输入 zhōng huá yǒu wèi
echo transliterator_transliterate("Any-Latin; Latin-ASCII; Lower()", "中华无为");
//输入 zhong hua you wei
echo transliterator_transliterate("Any-Latin; Latin-ASCII; Upper()", "中华无为");
//输入 ZHONG HUA YOU WEI
echo transliterator_transliterate("Any-Latin", "重阳");
//输入 zhòng yáng (毛病,多音字仍是坑)

苹果上的CFStringTransform/kCFStringTransformToLatin汉字转拼音也是经由过程ICU transform完成的:

http://userguide.icu-project.org/transforms/general#TOC-ICU-Transliterators
http://nshipster.com/cfstringtransform/

利用php5-intl(依靠ICU:libicu52)的简体中文(zh_CN)排序器collator按拼音排序:

http://cn2.php.net/manual/zh/collator.sort.php
php-src/ext/intl --enable-intl --with-icu-dir=DIR

相干: MySQL数据表排序法则COLLATE=utf8_general_ci

<?php
header("Content-Type: text/html; charset=utf-8");
$coll = collator_create("zh_CN");
$arr = array("中国","西岳","中原","中华","重阳","分量","b","a",2,1);
collator_sort($coll, $arr);
var_export($arr);
/*输入(可见汉字按照拼音排序,但不能辨认多音字"重"):
array (
 0 => "a",
 1 => "b",
 2 => "西岳",
 3 => "中原",
 4 => "中国",
 5 => "中华",
 6 => "分量",
 7 => "重阳",
 8 => 1,
 9 => 2,
)
*/

若是元素1和2加上引号变成字符串范例的话,则1和2排序后会呈现在开首.

检查已装置的软件包目次文件布局:

dpkg -L libicu52:amd64
/usr/lib/x86_64-linux-gnu/libicu*
/usr/lib/x86_64-linux-gnu/libicudata.so.52.1 静态库23MB
/usr/lib/x86_64-linux-gnu/libicudata.a       静态库23MB

Windows上则是:

phpicu*.dll
phpextphp_intl.dll

下面完成了经常利用的按汉字拼音首字母分组排序的功效:

<?php
header("Content-Type: text/html; charset=utf-8");
$arr = array("百度晓得","阿里云","百度百科","阿里巴巴");
$coll = collator_create("zh_CN");
collator_sort($coll, $arr);
var_export($arr);
//输入 array ( 0 => "阿里巴巴", 1 => "阿里云", 2 => "百度百科", 3 => "百度晓得", )
$tmp = array();
foreach($arr as $v) {
 $pinyin = transliterator_transliterate("Any-Latin; Latin-ASCII; Upper()", $v);
 $tmp[substr($pinyin, 0, 1)][] = $v;
}
var_export($tmp);
/*输入
array (
 "A" =>
 array (
  0 => "阿里巴巴",
  1 => "阿里云",
 ),
 "B" =>
 array (
  0 => "百度百科",
  1 => "百度晓得",
 ),
)
*/

附:

ls号令,Linux和Windows的文件办理器,显现以下:

1  2  a  b  西岳  中原  中国  中华  分量  重阳

数字,字母,汉字(按拼音排序,但不能辨认多音字)

汉字方面,下面的天然排序跟下面有所差别:

<?php
header("Content-Type: text/plain; charset=utf-8");
$arr = array("中国","西岳","中原","中华","重阳","分量","b","a",2,1);
natsort($arr); // 等价于 uasort($arr, function($a, $b) { return strnatcmp($a, $b); });
var_export($arr);
/*输入(天然排序下汉字并不按照拼音停止排序):
array (
 9 => 1,
 8 => 2,
 7 => "a",
 6 => "b",
 3 => "中华",
 0 => "中国",
 2 => "中原",
 1 => "西岳",
 5 => "分量",
 4 => "重阳",
)
*/

几种排序的比拟:

<?php
header("Content-Type: text/plain; charset=utf-8");
$arr = explode(" ", "1 11 111 112 12 121 122 a aa aaa aab ab aba abb 阿里 百度 中 中国 中国国 中国中 中中 中中国 中中中");
shuffle($arr); //打乱数组
//collator_sort(collator_create("zh_CN"), $arr);
//usort($arr, function($a, $b) { return strnatcmp($a, $b); });
usort($arr, function($a, $b) { return strcmp($a, $b); });
echo implode(" ",$arr);
exit();
?>

ls排序:

1 11 111 112 12 121 122 a aa aaa aab ab aba abb 阿里 百度 中 中国 中国国 中国中 中中 中中国 中中中

collator_sort(zh_CN)排序(近似Windows/Linux桌面文件办理器里的默许按称号回升摆列):

1 11 12 111 112 121 122 a aa aaa aab ab aba abb 阿里 百度 中 中国 中国国 中国中 中中 中中国 中中中

strnatcmp排序:

1 11 12 111 112 121 122 a aa aaa aab ab aba abb 中 中中 中中中 中中国 中国 中国中 中国国 百度 阿里

strcmp排序:

1 11 111 112 12 121 122 a aa aaa aab ab aba abb 中 中中 中中中 中中国 中国 中国中 中国国 百度 阿里

PS:这里再为大师保举2款比拟适用的相干在线排序东西供大师参考利用:

在线中英文按照首字母排序东西:
http://tools.jb51.net/aideddesign/zh_paixu

在线文本倒序翻转排序东西:
http://tools.jb51.net/aideddesign/flipped_txt

更多对于PHP相干内容感乐趣的读者可检查本站专题:《php排序算法总结》、《PHP数组(Array)操纵技能大全》、《php字符串(string)用法总结》、《php经常利用函数与技能总结》、《PHP毛病与非常处置体例总结》、《php面向工具法式设想入门教程》及《php罕见数据库操纵技能汇总》

但愿本文所述对大师PHP法式设想有所赞助。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家搜集公司供给自助建站平台搭建办事。

相干消息more

26
04月
PHP将身份证正背面两张照片分解一张图片的代

详细代码以下,后面局部是面条代码,后面是封了一个函数,便于频频利用。注重函数后面的正文申明,由于不想给这个函数搞太多参数,以是有一些设置装备摆设项就... >>概况

22
01月
网站扶植的代价你晓得几多呢

网站已成为企业成长的主要构成局部,它的存在不只能够或许赞助企业挖掘更多的潜伏用户、扩展营业市场,还对吸收用户、促进转化等方面有着不可或缺的感化... >>概况

26
04月
Thinkphp5.0主动天生模块及目次的方

本文实例报告了Thinkphp5.0主动天生模块及目次的体例。分享给大师供大师参考,详细以下:Thinkphp5.0宣布已有些光阴了,听说性... >>概况

20
04月
HTML5在a标签内安排块级元素示例代码

对照起XHTML来讲,HTML5经由过程更简略的元素引发了一系列的思虑,坦诚地讲,这真的是急需的简化。这些简化之一便是能够或许经由过程<a>... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站