PHP实现的汉字拼音转换和公历农历转换类及使用示例
本文整理了PHP汉字拼音转换和公历农历转换两个功能类文件,非常实用。比如我们查找通讯录可以通过联系人姓名的拼音首字母来查询,可以通过首字母来导航大数据量,可以通过转换拼音来做网站优化等。公农历转化一般用在日历日程安排的项目中,方便农历的节日提醒等等。
1、PHP汉字转拼音
Pinyin.class.php类文件可以将大多数汉字转换成汉语拼音,当然也有个别生僻字不能转换,如果你想转换所有的汉字拼音的话,可能需要再配合一个汉字字库来实现,使用该类文件就基本能满足你的项目需求了。用法:
require_once("Pinyin.class.php"); $pinyin=newPinyin(); $str='好好学习天天向上'; echo$pinyin->strtopin($str);
执行后输出:haohaoxuexitiantianxiangshang。
如果只是想输出汉字首字母则使用:
echo$pinyin->strtopin($str,1);
执行后输出:hhxxttxs。
Pinyin.class.php源码:
<?php classPinyin{ private$d=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 ) );
functiong($num){ if($num>0&&$num<160){ returnchr($num); } elseif($num<-20319||$num>-10247){ return""; }else{ for($i=count($this->d)-1;$i>=0;$i--){ if($this->d[$i][1]<=$num) break; } return$this->d[$i][0]; } }
functionc($str){ $ret=""; for($i=0;$i<strlen($str);$i++){ $p=ord(substr($str,$i,1));
if($p>160){
$q=ord(substr($str,++$i,1));
$p=$p*256+$q-65536;
} $ret.=$this->g($p);
} $ret=substr($ret,0,1); return$ret; }
functionf($str){ $ret=""; for($i=0;$i<strlen($str);$i++){ $p=ord(substr($str,$i,1)); if($p>160){ $q=ord(substr($str,++$i,1)); $p=$p*256+$q-65536; } $ret.=$this->g($p); } return$ret; }
/* PHP截取UTF-8编码的中英文字符串 */ functionutf8_substr($str,$from,$len){ returnpreg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$str); }
/* 将中英文字符串转换成拼音 */ functionstrtopin($chinese,$type=0){ $i=0; $pinyin=""; $arr=array(); while(1){ $str=$this->utf8_substr($chinese,$i,1); if(!empty($str)){ $arr[$i]=$str; $str=iconv("utf-8","gb2312",$str); if($type==1){//转换成首字母 $pinyin.=$this->c($str); }else{ //转换成全拼 $pinyin.=$this->f($str).""; } $i=$i+1; }else break; } return$pinyin; } }
?>