PHP converts Chinese characters to Pinyin and obtains the first letter of a word.
This example describes how PHP converts Chinese characters to Pinyin and obtains the first letter of a word. We will share this with you for your reference. The details are as follows:
Recently, I want to develop a function to convert Chinese characters to Pinyin and get the first word. Haha ~
Class Pinyin {private $ _ outEncoding = "GB2312"; public function getPinyin ($ str, $ pix = '', $ code = 'gb2312 ') {$ _ DataKey = "a | ai | an | ang | ao | ba | bai | ban | bang | bao | bei | ben | beng | bi | bian | biao | bie | bin | bing | bo | bu | ca | cai | can | cang | cao | ce | ceng | cha ". "| chai | chan | chang | chao | che | chen | cheng | chi | chong | chou | chu | chuai | chuan | chuang | chui | chun | chuo | ci | cong | cou | cu | ". "cuan | cui | cun | cuo | da | dai | dan | dang | dao | de | deng | di | dian | di Ao | die | ding | diu | dong | dou | du | duan | dui | dun | duo | e | en | er ". "| fa | fan | fang | fei | fen | feng | fo | fou | fu | ga | gai | gan | gang | gao | ge | gei | gen | geng | gong | gou | gu | gua | guai | guan | guang | gui ". "| gun | guo | ha | hai | han | hang | hao | he | hei | hen | heng | hong | hou | hu | hua | huai | huan | huang | hui | hun | huo | ji | jia | jian | jiang ". "| jiao | jie | jin | jing | jiong | jiu | ju | juan | jue | jun | ka | kai | kan | kang | kao | ke | ken | keng | kong | kou | ku | kua | kuai | kuan | kuang ". "| kui | ku N | kuo | la | lai | lan | lang | lao | le | lei | leng | li | lia | lian | liang | liao | lie | lin | ling | liu | long | lou | lu | lv | luan | lue ". "| lun | luo | ma | mai | man | mang | mao | me | mei | men | meng | mi | mian | miao | mie | min | ming | miu | mo | mou | mu | na | nai | nan | nang | nao | ne ". "| nei | nen | neng | ni | nian | niang | niao | nie | nin | ning | niu | nong | nu | nv | nuan | nue | nuo | o | ou | pa | pai | pan | pang | pao | pei | pen ". "| peng | pi | pian | piao | pie | pin | ping | po | pu | qi | qia | qian | qiang | qiao | qie | qin | qi Ng | qiong | qiu | qu | quan | que | qun | ran | rang ". "| rao | re | ren | reng | ri | rong | rou | ru | ruan | rui | run | ruo | sa | sai | san | sang | sao | se | sen | seng | sha | shai | shan | shang | shao | ". "she | shen | sheng | shi | shou | shu | shuai | shuan | shuang | shui | shun | shuo | si | song | sou | su | suan | sui | sun | suo | ta | tai | ". "tan | tang | tao | te | teng | ti | tian | tiao | tie | ting | tong | tou | tu | tuan | tui | tun | tuo | wa | wai | wan | wang | wei | wen | weng | wo | wu ". "| xi | xia | xian | xiang | xiao | x Ie | xin | xing | xiong | xiu | xu | xuan | xue | xun | ya | yan | yang | yao | ye | yi | yin | ying | yo | yong | you". "| yu | yuan | yue | yun | za | zai | zan | zang | zao | ze | zei | zen | zeng | zha | zhai | zhan | zhang | zhao | zhe | zhen | zheng | zhi | zhong | ". "zhou | zhu | zhua | zhuai | zhuan | zhuang | zhui | zhun | zhuo | zi | zong | zou | zu | zuan | zui | zun | zuo "; $ _ DataValue = "-20319 |-20317 |-20304 |-20295 |-20292 |-20283 |-20265 |-20257 |-20242 |-20230 |-20051 |-20036 |-|-20032 |-20026 |-20002 |-1999 0 ". "|-19986 |-19982 |-19976 |-19805 |-19784 |-19775 |-19774 |-19763 |-19756 |-19751 |-19746 |-19741 |-19739 |-|-19728 |-19725 ". "|-19715 |-19540 |-19531 |-19525 |-19515 |-19500 |-19484 |-19479 |-19467 |-19289 |-19288 |-19281 |-19275 |-|-19270 |-19263 ". "|-19261 |-19249 |-19243 |-19242 |-19238 |-19235 |-19227 |-19224 |-19218 |-19212 |-19038 |-19023 |-19018 |-|-19006 |-19003 ". "|-18996 |-18977 |-18961 |-18952 |-18783 |-18774 |-18773 |-18763 |-18756 | -18741 |-18735 |-18731 |-18722 |-18710 |-18697 ". "|-18696 |-18526 |-18518 |-18501 |-18490 |-18478 |-18463 |-18448 |-18447 |-18446 |-18239 |-18237 |-18231 |-|-18220 |-18211 ". "|-18201 |-18184 |-18183 |-18181 |-18012 |-17997 |-17988 |-17970 |-17964 |-17961 |-17950 |-17947 |-17931 |-|-17928 |-17922 ". "|-17759 |-17752 |-17733 |-17730 |-17721 |-17703 |-17701 |-17697 |-17692 |-17683 |-17676 |-17496 |-17487 |-|-17482 |-17468 ". "|-17454 |-17433 |-17427 |-1 7417 |-17202 |-17185 |-16983 |-16970 |-16942 |-16915 |-16733 |-16708 |-16706 |-16689 |-16664 ". "|-16657 |-16647 |-16474 |-16470 |-16465 |-16459 |-16452 |-16448 |-16433 |-16429 |-16427 |-16423 |-16419 |-|-16412 |-16407 ". "|-16403 |-16401 |-16393 |-16220 |-16216 |-16212 |-16205 |-16202 |-16187 |-16180 |-16171 |-16169 |-16158 |-|-16155 |-15959 ". "|-15958 |-15944 |-15933 |-15920 |-15915 |-15903 |-15889 |-15878 |-15707 |-15701 |-15681 |-15667 |-15661 |-|-1 5659 |-15652 ". "|-15640 |-15631 |-15625 |-15454 |-15448 |-15436 |-15435 |-15419 |-15416 |-15408 |-15394 |-15385 |-15377 |-|-15375 |-15369 ". "|-15363 |-15362 |-15183 |-15180 |-15165 |-15158 |-15153 |-15150 |-15149 |-15144 |-15143 |-15141 |-15140 |-|-15139 |-15128 ". "|-15121 |-15119 |-15117 |-15110 |-15109 |-14941 |-14937 |-14933 |-14930 |-14929 |-14928 |-14926 |-14922 |-|-14921 |-14914 ". "|-14908 |-14902 |-14894 |-14889 |-14882 |-14873 |-14871 |-148 57 |-14678 |-14674 |-14670 |-14668 |-14663 |-14654 |-14645 ". "|-14630 |-14594 |-14429 |-14407 |-14399 |-14384 |-14379 |-14368 |-14355 |-14353 |-14345 |-14170 |-14159 |-|-14151 |-14149 ". "|-14145 |-14140 |-14137 |-14135 |-14125 |-14123 |-14122 |-14112 |-14109 |-14099 |-14097 |-14094 |-14092 |-|-14090 |-14087 ". "|-14083 |-13917 |-13914 |-13910 |-13907 |-13906 |-13905 |-13896 |-13894 |-13878 |-13870 |-13859 |-13847 |-|-13831 |-13658 ". "|-13611 |-13601 |-13406 |-13404 |-13400 |-13398 |-13395 |-13391 |-13387 |-13383 |-13367 |-13359 |-13356 |-13343 |-13340". "|-13329 |-13326 |-13318 |-13147 |-13138 |-13120 |-13107 |-13096 |-13095 |-13091 |-13076 |-13068 |-13063 |-|-13060 |-12888 ". "|-12875 |-12871 |-12860 |-12858 |-12852 |-12849 |-12838 |-12831 |-12829 |-12812 |-12802 |-12607 |-12597 |-|-12594 |-12585 ". "|-12556 |-12359 |-12346 |-12320 |-12300 |-12120 |-12099 |-12089 |-12074 |-12067 |-12058 |-12039 |-11867 |-11861 |-11847 ". "|-11831 |-11798 |-11781 |-11604 |-11589 |-11536 |-11358 |-11340 |-11339 |-11324 |-11303 |-11097 |-11077 |-|-11067 |-11055 ". "|-11052 |-11045 |-11041 |-11038 |-11024 |-11020 |-11019 |-11018 |-11014 |-10838 |-10832 |-10815 |-10800 |-|-10790 |-10780 ". "|-10764 |-10587 |-10544 |-10533 |-10519 |-10331 |-10329 |-10328 |-10322 |-10315 |-10309 |-10307 |-10296 |-|-10281 |-10274 ". "|-10270 |-10262 |-10260 |-10256 |-10254"; $ _ TDat AKey = explode ('|', $ _ DataKey); $ _ TDataValue = explode ('|', $ _ DataValue); $ data = (PHP_VERSION> = '5. 0 ')? Array_combine ($ _ TDataKey, $ _ TDataValue): $ this-> _ Array_Combine ($ _ TDataKey, $ _ TDataValue); arsort ($ data); reset ($ data ); $ str = $ this-> safe_encoding ($ str); $ _ Res = ''; 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 ;} $ _ Res. = $ this-> _ Pinyin ($ _ P, $ data ). $ pix ;} Return preg_replace ("/[^ a-z0-9 ". $ pix. "] */", '', $ _ Res);} private function _ Pinyin ($ _ Num, $ _ Data) {if ($ _ Num> 0 & $ _ Num <160) return chr ($ _ Num ); elseif ($ _ Num <-20319 | $ _ Num>-10247) return ''; else {foreach ($ _ Data as $ k => $ v) {if ($ v <= $ _ Num) break;} return $ k;} public function getFirstChar ($ str = '') {if (! $ Str) return null; $ fchar = ord ($ str {0}); if ($ fchar> = ord ("") and $ fchar <= ord ("z") return strtoupper ($ str {0}); $ s = $ this-> safe_encoding ($ str ); $ asc = ord ($ s {0}) * 256 + ord ($ s {1})-65536; if ($ asc >=- 20319 and $ asc <=-20284) return "A"; if ($ asc >=- 20283 and $ asc <=-19776) return "B"; if ($ asc >=- 19775 and $ asc <=- 19219) return "C "; if ($ asc >=- 19218 and $ asc <=-18711) return "D"; if ($ asc >=- 18710 and $ asc <=-18527) return "E"; if ($ asc >=- 18526 and $ asc <=- 18240) return "F "; if ($ asc >=- 18239 and $ asc <=-17923) return "G"; if ($ asc >=- 17922 and $ asc <=-17418) return "H"; if ($ asc >=- 17417 and $ asc <=- 16475) return "J "; if ($ asc >=- 16474 and $ asc <=-16213) return "K"; if ($ asc >=- 16212 and $ asc <=-15641) return "L"; if ($ asc >=- 15640 and $ asc <=- 15166) return "M "; if ($ asc >=- 15165 and $ asc <=-14923) return "N"; if ($ asc >=- 14922 and $ asc <=-14915) return "O"; if ($ asc >=- 14914 and $ asc <=- 14631) return "P "; if ($ asc >=- 14630 and $ asc <=-14150) return "Q"; if ($ asc >=- 14149 and $ asc <=-14091) return "R"; if ($ asc >=- 14090 and $ asc <=- 13319) return "S "; if ($ asc >=- 13318 and $ asc <=-12839) return "T"; if ($ asc >=- 12838 and $ asc <=-12557) return "W"; if ($ asc >=- 12556 and $ asc <=- 11848) return "X "; if ($ asc >=- 11847 and $ asc <=-11056) return "Y"; if ($ asc >=- 11055 and $ asc <=-10247) return "Z"; return null;} function safe_encoding ($ string) {$ encoding = "UTF-8"; for ($ I = 0; $ I <strlen ($ string ); $ I ++) {if (ord ($ string {$ I}) <128) continue; if (ord ($ string {$ I}) & 224) = 224) {// The first byte is judged by $ char = $ string {++ $ I}; if (ord ($ char) & 128) = 128) {// The second byte is judged by $ char =$ string {++ $ I}; if (ord ($ char) & 128) = 128) {$ encoding = "UTF-8"; break ;}}if (ord ($ string {$ I}) & 192) = 192) {// The first byte is judged by $ char =$ string {++ $ I}; if (ord ($ char) & 128) = 128) {// The second byte is determined by $ encoding = "GB2312"; break ;}} if (strtoupper ($ encoding) = strtoupper ($ this-> _ outEncoding )) return $ string; else return iconv ($ encoding, $ this-> _ outEncoding, $ string);} private function _ Array_Combine ($ _ Arr1, $ _ Arr2) {for ($ I = 0; $ I <count ($ _ Arr1); $ I ++) $ _ Res [$ _ Arr1 [$ I] = $ _ Arr2 [$ I]; return $ _ Res ;}}
The test code is as follows:
$ Pinyin = new Pinyin (); echo $ pinyin-> getFirstChar ("Hubei Wuhan "). "<br/>"; echo $ pinyin-> getPinyin ("beishangguang "). "<br/>"; echo $ pinyin-> getPinyin ("huoying "). "<br/>"; echo $ pinyin-> getFirstChar ("get "). "<br/>"; echo $ pinyin-> getFirstChar ("TOM "). "<br/> ";
Running result:
Hbei shang guang huo ying HT
PS: here we will provide you with several Pinyin and letter-related tools for your reference:
Online tools for sorting by initials in Chinese and English:
Http://tools.jb51.net/aideddesign/zh_paixu
Tools for converting Chinese characters into pinyin online:
Http://tools.jb51.net/transcoding/pinyin
Tools for converting Chinese characters to PinYin online:
Http://tools.jb51.net/transcoding/hanzi2pinyin
Online Conversion Tool for Chinese Character pinyin:
Http://tools.jb51.net/transcoding/zh_pinyin
Online Letter Case Conversion Tool:
Http://tools.jb51.net/transcoding/upper