接到上一文章,基本上漢字拼音標都可以用SQL語句來查詢,但是那樣的查詢很不效率,為了達到更快更效率的查詢,我們需要另外再建立一個索引列
並在索引列中插入標簽字第一個字母或者是拼音
那麼漢字又如何轉化成拼音呢?
這裡我給大家提供一個漢字轉化成拼音的類:大家在漢字要保存到數據庫之前就可以調用這個類,把漢字轉化成拼音或者轉成拼音後取第一個字母保存到索引字段,如果下次查詢直接用SQL語句實現英文字母的排序方法就可以;
這種方法比第一文章中的方法SQL查詢要效率很多;
以下是PHP類代碼:如有問題請加我QQ一起來討論;
/**
* 將中文字轉換成拼音的方法
*
* 使用方法:$pinyin = zh2pinyin(’漢字’); // display ‘hanzi’
*/
// 定義拼音字典
$dictionary = array(
array(”a”, -20319),
array(”ai”, -20317),
array(”an”, -20304),
array(”ang”, -20295),
array(”ao”, -20292),
array(”ba”, -20283),
array(”bai”, -20265),
array(”ban”, -20257),
array(”bang”, -20242),
array(”bao”, -20230),
array(”bei”, -20051),
array(”ben”, -20036),
array(”beng”, -20032),
array(”bi”, -20026),
array(”bian”, -20002),
array(”biao”, -19990),
array(”bIE”, -19986),
array(”bin”, -19982),
array(”bing”, -19976),
array(”bo”, -19805),
array(”bu”, -19784),
array(”ca”, -19775),
array(”cai”, -19774),
array(”can”, -19763),
array(”cang”, -19756),
array(”cao”, -19751),
array(”ce”, -19746),
array(”ceng”, -19741),
array(”cha”, -19739),
array(”chai”, -19728),
array(”chan”, -19725),
array(”chang”, -19715),
array(”chao”, -19540),
array(”che”, -19531),
array(”chen”, -19525),
array(”cheng”, -19515),
array(”chi”, -19500),
array(”chong”, -19484),
array(”chou”, -19479),
array(”chu”, -19467),
array(”chuai”, -19289),
array(”chuan”, -19288),
array(”chuang”, -19281),
array(”chui”, -19275),
array(”chun”, -19270),
array(”chuo”, -19263),
array(”ci”, -19261),
array(”cong”, -19249),
array(”cou”, -19243),
array(”cu”, -19242),
array(”cuan”, -19238),
array(”cui”, -19235),
array(”cun”, -19227),
array(”cuo”, -19224),
array(”da”, -19218),
array(”dai”, -19212),
array(”dan”, -19038),
array(”dang”, -19023),
array(”dao”, -19018),
array(”de”, -19006),
array(”deng”, -19003),
array(”di”, -18996),
array(”dian”, -18977),
array(”diao”, -18961),
array(”dIE”, -18952),
array(”ding”, -18783),
array(”diu”, -18774),
array(”dong”, -18773),
array(”dou”, -18763),
array(”du”, -18756),
array(”duan”, -18741),
array(”dui”, -18735),
array(”dun”, -18731),
array(”duo”, -18722),
array(”e”, -18710),
array(”en”, -18697),
array(”er”, -18696),
array(”fa”, -18526),
array(”fan”, -18518),
array(”fang”, -18501),
array(”fei”, -18490),
array(”fen”, -18478),
array(”feng”, -18463),
array(”fo”, -18448),
array(”fou”, -18447),
array(”fu”, -18446),
array(”ga”, -18239),
array(”gai”, -18237),
array(”gan”, -18231),
array(”gang”, -18220),
array(”gao”, -18211),
array(”ge”, -18201),
array(”gei”, -18184),
array(”gen”, -18183),
array(”geng”, -18181),
array(”gong”, -18012),
array(”gou”, -17997),
array(”gu”, -17988),
array(”gua”, -17970),
array(”guai”, -17964),
array(”guan”, -17961),
array(”guang”, -17950),
array(”gui”, -17947),
array(”gun”, -17931),
array(”guo”, -17928),
array(”ha”, -17922),
array(”hai”, -17759),
array(”han”, -17752),
array(”hang”, -17733),
array(”hao”, -17730),
array(”he”, -17721),
array(”hei”, -17703),
array(”hen”, -17701),
array(”heng”, -17697),
array(”hong”, -17692),
array(”hou”, -17683),
array(”hu”, -17676),
array(”hua”, -17496),
array(”huai”, -17487),
array(”huan”, -17482),
array(”huang”, -17468),
array(”hui”, -17454),
array(”hun”, -17433),
array(”huo”, -17427),
array(”ji”, -17417),
array(”jia”, -17202),
array(”jian”, -17185),
array(”jiang”, -16983),
array(”jiao”, -16970),
array(”jIE”, -16942),
array(”jin”, -16915),
array(”jing”, -16733),
array(”jiong”, -16708),
array(”jiu”, -16706),
array(”ju”, -16689),
array(”juan”, -16664),
array(”jue”, -16657),
array(”jun”, -16647),
array(”ka”, -16474),
array(”kai”, -16470),
array(”kan”, -16465),
array(”kang”, -16459),
array(”kao”, -16452),
array(”ke”, -16448),
array(”ken”, -16433),
array(”keng”, -16429),
array(”kong”, -16427),
array(”kou”, -16423),
array(”ku”, -16419),
array(”kua”, -16412),
array(”kuai”, -16407),
array(”kuan”, -16403),
array(”kuang”, -16401),
array(”kui”, -16393),
array(”kun”, -16220),
array(”kuo”, -16216),
array(”la”, -16212),
array(”lai”, -16205),
array(”lan”, -16202),
array(”lang”, -16187),
array(”lao”, -16180),
array(”le”, -16171),
array(”lei”, -16169),
array(”leng”, -16158),
array(”li”, -16155),
array(”lia”, -15959),
array(”lian”, -15958),
array(”liang”, -15944),
array(”liao”, -15933),
array(”lIE”, -15920),
array(”lin”, -15915),
array(”ling”, -15903),
array(”liu”, -15889),
array(”long”, -15878),
array(”lou”, -15707),
array(”lu”, -15701),
array(”lv”, -15681),
array(”luan”, -15667),
array(”lue”, -15661),
array(”lun”, -15659),
array(”luo”, -15652),
array(”ma”, -15640),
array(”mai”, -15631),
array(”man”, -15625),
array(”mang”, -15454),
array(”mao”, -15448),
array(”me”, -15436),
array(”mei”, -15435),
array(”men”, -15419),
array(”meng”, -15416),
array(”mi”, -15408),
array(”mian”, -15394),
array(”miao”, -15385),
array(”mIE”, -15377),
array(”min”, -15375),
array(”ming”, -15369),
array(”miu”, -15363),
array(”mo”, -15362),
array(”mou”, -15183),
array(”mu”, -15180),
array(”na”, -15165),
array(”nai”, -15158),
array(”nan”, -15153),
array(”nang”, -15150),
array(”nao”, -15149),
array(”ne”, -15144),
array(”nei”, -15143),
array(”nen”, -15141),
array(”neng”, -15140),
array(”ni”, -15139),
array(”nian”, -15128),
array(”niang”, -15121),
array(”niao”, -15119),
array(”nIE”, -15117),
array(”nin”, -15110),
array(”ning”, -15109),
array(”niu”, -14941),
array(”nong”, -14937),
array(”nu”, -14933),
array(”nv”, -14930),
array(”nuan”, -14929),
array(”nue”, -14928),
array(”nuo”, -14926),
array(”o”, -14922),
array(”ou”, -14921),
array(”pa”, -14914),
array(”pai”, -14908),
array(”pan”, -14902),
array(”pang”, -14894),
array(”pao”, -14889),
array(”pei”, -14882),
array(”pen”, -14873),
array(”peng”, -14871),
array(”pi”, -14857),
array(”pian”, -14678),
array(”piao”, -14674),
array(”pIE”, -14670),
array(”pin”, -14668),
array(”ping”, -14663),
array(”po”, -14654),
array(”pu”, -14645),
array(”qi”, -14630),
array(”qia”, -14594),
array(”qian”, -14429),
array(”qiang”, -14407),
array(”qiao”, -14399),
array(”qIE”, -14384),
array(”qin”, -14379),
array(”qing”, -14368),
array(”qiong”, -14355),
array(”qiu”, -14353),
array(”qu”, -14345),
array(”quan”, -14170),
array(”que”, -14159),
array(”qun”, -14151),
array(”ran”, -14149),
array(”rang”, -14145),
array(”rao”, -14140),
array(”re”, -14137),
array(”ren”, -14135),
array(”reng”, -14125),
array(”ri”, -14123),
array(”rong”, -14122),
array(”rou”, -14112),
array(”ru”, -14109),
array(”ruan”, -14099),
array(”rui”, -14097),
array(”run”, -14094),
array(”ruo”, -14092),
array(”sa”, -14090),
array(”sai”, -14087),
array(”san”, -14083),
array(”sang”, -13917),
array(”sao”, -13914),
array(”se”, -13910),
array(”sen”, -13907),
array(”seng”, -13906),
array(”sha”, -13905),
array(”shai”, -13896),
array(”shan”, -13894),
array(”shang”, -13878),
array(”shao”, -13870),
array(”she”, -13859),
array(”shen”, -13847),
array(”sheng”, -13831),
array(”shi”, -13658),
array(”shou”, -13611),
array(”shu”, -13601),
array(”shua”, -13406),
array(”shuai”, -13404),
array(”shuan”, -13400),
array(”shuang”, -13398),
array(”shui”, -13395),
array(”shun”, -13391),
array(”shuo”, -13387),
array(”si”, -13383),
array(”song”, -13367),
array(”sou”, -13359),
array(”su”, -13356),
array(”suan”, -13343),
array(”sui”, -13340),
array(”sun”, -13329),
array(”suo”, -13326),
array(”ta”, -13318),
array(”tai”, -13147),
array(”tan”, -13138),
array(”tang”, -13120),
array(”tao”, -13107),
array(”te”, -13096),
array(”teng”, -13095),
array(”ti”, -13091),
array(”tian”, -13076),
array(”tiao”, -13068),
array(”tIE”, -13063),
array(”ting”, -13060),
array(”tong”, -12888),
array(”tou”, -12875),
array(”tu”, -12871),
array(”tuan”, -12860),
array(”tui”, -12858),
array(”tun”, -12852),
array(”tuo”, -12849),
array(”wa”, -12838),
array(”wai”, -12831),
array(”wan”, -12829),
array(”wang”, -12812),
array(”wei”, -12802),
array(”wen”, -12607),
array(”weng”, -12597),
array(”wo”, -12594),
array(”wu”, -12585),
array(”xi”, -12556),
array(”xia”, -12359),
array(”xian”, -12346),
array(”xiang”, -12320),
array(”xiao”, -12300),
array(”xIE”, -12120),
array(”xin”, -12099),
array(”xing”, -12089),
array(”xiong”, -12074),
array(”xiu”, -12067),
array(”xu”, -12058),
array(”xuan”, -12039),
array(”xue”, -11867),
array(”xun”, -11861),
array(”ya”, -11847),
array(”yan”, -11831),
array(”yang”, -11798),
array(”yao”, -11781),
array(”ye”, -11604),
array(”yi”, -11589),
array(”yin”, -11536),
array(”ying”, -11358),
array(”yo”, -11340),
array(”yong”, -11339),
array(”you”, -11324),
array(”yu”, -11303),
array(”yuan”, -11097),
array(”yue”, -11077),
array(”yun”, -11067),
array(”za”, -11055),
array(”zai”, -11052),
array(”zan”, -11045),
array(”zang”, -11041),
array(”zao”, -11038),
array(”ze”, -11024),
array(”zei”, -11020),
array(”zen”, -11019),
array(”zeng”, -11018),
array(”zha”, -11014),
array(”zhai”, -10838),
array(”zhan”, -10832),
array(”zhang”, -10815),
array(”zhao”, -10800),
array(”zhe”, -10790),
array(”zhen”, -10780),
array(”zheng”, -10764),
array(”zhi”, -10587),
array(”zhong”, -10544),
array(”zhou”, -10533),
array(”zhu”, -10519),
array(”zhua”, -10331),
array(”zhuai”, -10329),
array(”zhuan”, -10328),
array(”zhuang”, -10322),
array(”zhui”, -10315),
array(”zhun”, -10309),
array(”zhuo”, -10307),
array(”zi”, -10296),
array(”zong”, -10281),
array(”zou”, -10274),
array(”zu”, -10270),
array(”zuan”, -10262),
array(”zui”, -10260),
array(”zun”, -10256),
array(”zuo”, -10254)
);
/**
* 查找字典轉換成拼音
*
* @param int $num 漢字的ASCII碼
* @return string 對應的拼音
*/
function transform($num)
{
global $dictionary;
if ($num > 0 && $num < 160) {
return chr($num);
} elseif ($num < -20319 || $num > -10247) {
return “”;
} else {
for ($i = count($dictionary) - 1; $i >= 0; $i–) {
if ($dictionary[$i][1] <= $num) {
break;
}
}
return $dictionary[$i][0];
}
}
/**
* 主方法
*
* @param string $string 需要轉換的漢字
* @return string 拼音
*/
function zh2pinyin($string)
{
$output = “”;
for ($i=0; $i < strlen($string); $i++) {
$letter = ord(substr($string, $i, 1));
if($letter > 160){
$tmp = ord(substr($string, ++$i, 1));
$letter = $letter * 256 + $tmp - 65536;
}
$output .= transform($letter);
}
return $output;
}
//select * from core_vender_info order by convert(vender_abbrev USING gbk) COLLATE gbk_chinese_ci MySQL可以按漢字拼音第一個字母排序
?>