PHP Simple Implementation method of <?php/* Chinese character to Pinyin first letter. Requirements: can only be the GB2312 code table inside the text character conversion to get the string corresponding to the first letter of the pinyin uppercase. Usage: Echo zh2py::conv (' Chinese People's Republic of China ');//chinese zhrmghg or $py = new Zh2py; echo $py->conv (' Chinese People's Republic of China ');//chinese zhrmghg*/class zh2py{//According to the Chinese Character location table//We can see from the 16-55 district is sorted by phonetic Alphabet, so we just need to judge a The location code of a Chinese character will be able to know its pinyin initials. The first part of the location table, sorted by phonetic alphabet. Zone 16-area 55/* ' A ' =>0xb0a1, ' B ' =>0xb0c5, ' C ' =>0xb2c1, ' D ' =>0xb4ee, ' E ' =>0xb6ea, ' F ' =>0xb7a2, ' G ' =>0XB8C1, ' H ' =>0xb9fe, ' J ' =>0xbbf7, ' K ' =>0xbfa6, ' L ' =>0xc0ac, ' M ' =>0xc2e8, ' N ' =>0xc4c3, ' O ' = 0xc5b6, ' P ' =>0xc5be, ' Q ' =>0xc6da, ' R ' =>0xc8bb, ' S ' =>0xc8f6, ' T ' =>0xcbfa, ' W ' =>0xcdda, ' X ' = 0XCEF4, ' Y ' =>0xd1b9, ' Z ' =>0xd4d1 */private static $FirstTable = Array (0xb0c5, 0xb2c1, 0xb4ee, 0xb6ea, 0xB 7A2, 0xb8c1, 0xb9fe, 0xbbf7, 0xbfa6, 0xc0ac, 0xc2e8, 0XC4C3, 0xc5b6, 0xc5be, 0xc6da, 0XC8BB, 0xc8f6, 0xCBFA, 0xCDDA, 0x CEF4, 0XD1B9, 0XD4D1,0XD7FA); private static $FirsTletter = "ABCDEFGHJKLMNOPQRSTWXYZ"; Location table Part Two, irregular, the following letter is the first letter of the phonetic alphabet in each area. From the online query, there may be some errors. Zone 56-87 private static $SecondTable = Array ("CJWGNSPGCGNEGYPBTYYZDXYKYGTZJNMJQMBSGZSCYJSYYFPGKBZGYDYWJKGKLJSW Kpjqhyjwrdzlsymrypywwcckznkyyg "," TTNGJEYKKZYTCJNMCYLQLYPYSFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCKBPHFFSSTYBGMXLPBYLLBHLX "," Smzmyjhsojnghdzqyklgjhsgqzhxqgkxzzwyscscjxyeyxadzpmdssmzjzqjyzcjjfwqjbdzbxgznzcpwhwxhqkmwfbpby "," Dtjzzkxhylygxfptyjyyzpszlfchmqshgmxxsxjyqdcsbbqbefsjyhwwgzkpylqbgldlcdtnmayddkssngycsgxlyzaypn "," Ptsdkdylhgymylcxpycjndqjwxqxfyyfjlejpzrxccqwqqsbzkymgplbmjrqcflnymyqmsqyrbcjthztqfrxqhxmqjcjly "," QGJMSHZKBSWYEMYLTXFSYDXWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCL "," Qkxlhxjrzjmfqhxhwywsbhtrxxglhqhfnmgykldyxzpylggsmtcfbajjzyljtyanjgbjplqgszyqyaxbkysecjsznslyzh "," Zxlzcghpxzhznytdsbcjkdlzayffydlebbgqyzkxgldndnyskjshdlyxbcghxypkdjmmzngmmclgwzszxzjfznmlzzthcs "," YDBdllscddnlkjykjsycjlkwhqasdknhcsgaghdaashtcplcpqybszmpjlpcjoqlcdhjjysprchnwjnlhlyyqyywzptczg "," Wwmzffjqqqqyxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmssjzldbydcfcxyhlxchyzjqsqqagmnyxpfrkssbjlyxy "," Syglnscmhcwwmnzjjlxxhchsyzsttxrycyxbyhcsmxjsznpwgpxxtaybgajcxlyxdccwzocwkccsbnhcpdyznfcyytyckx "," KYBSQKKYTQQXFCMCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQKZPQSQSCFYMMDMGBWHWLGSLLYSDLMLXPTHMJ "," Hwljzyhzjxktxjlhxrswlwzjcbxmhzqxsdzpsgfcsglsxymjshxpjxwmyqksmyplrthbxftpmhyxlchlhlzylxgsssstcl "," Sldclrpbhzhxyyfhbmgdmycnqqwlqhjjcywjzyejjdhpblqxtqkwhlchqxagtlxljxmsljhtzkzjecxjcjnmfbycsfywyb "," Jzgnysdzsqyrsljpclpwxsdwejbjcbcnaytwgmpapclyqpclzxsbnmsggfnzjjbzsfzyntxhplqkzczwalsbczjxsyzgwk "," YPSGXFZFCDKHJGXTLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWFMJKLDDPMJEGXYHYLXHLQYQHKYCW "," Cjmyyxnatjhyccxzpcqlbzwwytwbqcmlpmyrjcccxfpznzzljplxxyztzlgdltcklyrzzgqttjhhhjljaxfgfjzslcfdqz "," LclgjdjzsnzlljpjqdcclcjxmyzftsxgcgsbrzxjqqctzhgyqtjqqlzxjYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNW "," CZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJTFCJXDYGJQJJPMGWGJJJPKQSB "," Gbmmcjssclpqpdxcdyykypcjddyygywrhjrtgznyqldkljszzgzqzjgdykshpzmtlcpwnjyfyzdjcnmwescyglbtzzgmss "," Llyxysxxbsjsbbsgghfjlypmzjnlyywdqshzxtyywhmcyhywdbxbtlmsyyyfsxjcbdxxlhjhfssxzqhfzmzcztqcxzxrtt "," Djhnryzqqmtqdmmgnydxmjgdxcdyzbffallztdltfxmxqzdngwqdbdczjdxbzgsqqddjcmbkzffxmkdmdsyyszcmljdsyn "," Sprskmkmpcklgtbqtfzswtfgglyplljzhgjjgypzltcsmcnbtjbqfkdhbyzgkpbbymtdssxtbnpdkleycjnycdykztdhqh "," Syzsctarlltkzlgecllkjlqjaqnbdkkghpjtzqksecshalqfmmgjnlyjbbtmlyzxdxjpldlpcqdhzycbzsczbzmsljflkr "," Zjsnfrgjhxpdhyjybzgdlqcsezgxlblgyxtwmabchecmwyjyzlljjyhlgndjlslygkdzpzxjyyzlwcxszfgwyydlyhcljs "," Cmbjhblyzlycblydpdqysxqzbytdkyxjyycnrjmpdjgklcljbctbjddbblblczqrpyxjcjlzcshltoljnmdddlngkathqh "," Jhykheznmshrphqqjchgmfprxhjgdychghlyrzqlcyqjnzsqtkqjymszswlcfqqqxyfggyptqwlmcrnfkkfsyylqbmqamm "," MYXCTPSHcptxxzzsmphpshmclmldqfyqxszyjdjjzzhqpdszglstjbckbxyqzjsgpsxqzqzrqtbdkyxzkhhgflbcsmdldg "," Dzdblzyycxnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbltxzclzshzcxrqjgjylxzfjphymzqqydfqjjlzznzjcdgzyg "," Ctxmzysctlkphtxhtlbjxjlxscdqxcbbtjfqzfsltjbtkqbxxjjljchczdbzjdczjdcprnpqcjpfczlclzxzdmxmphjsgz "," Gszzqlylwtjpfsyasmcjbtzyycwmytzsjjljcqlwzmalbxyfbpnlsfhtgjwejjxxglljstgshjqlzfkcgnnnszfdeqfhbs "," Aqtgylbxmmygszldydqmjjrgbjtkgdhgkblqkbdmbylxwcxyttybkmrtjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz ",); public static function UTF8_TO_GBK ($string)//encoding conversion, must be converted to GB2312 characters, here is just simple judgment is not very accurate, you can write one yourself. {if (mb_check_encoding ($string, ' gb2312 ')) return $string; if (function_exists (' Iconv ')) return Iconv ("Utf-8", "Gb2312//ignore", $string); Return mb_convert_encoding ($string, ' gb2312 ', ' utf-8 '); public static function conv ($str) {$str = SELF::UTF8_TO_GBK ($STR); $len = strlen ($STR); $NEWSTR = "; for ($i =0; $i < $len; + + $i) {$H= Ord ($str [$i]); $L = Ord ($str [$i +1]); Invalid character Set if ($H < 0xb0 | | $L < 0XA1 | | $H > 0xf7 | | $L = = 0xFF) {$newStr. = $str [$i]; Continue if ($H < 0xd8)//($H >= 0xb0 && $H <=0xd7)//query text in the first-level kanji area (16-55) {$W = ($H << 8 ) | $L; foreach (self:: $FirstTable as $key = + $value) {if ($W < $value) {$newStr. = s Elf:: $FirstLetter [$key]; Break }}} else//if (H >= 0xd8 && H <= 0xf7)//query Chinese in the two-level Chinese character area (56-87) $newStr. =self:: $Sec ondtable[$H -0xd8][$L -0XA1]; + + $i; } return $NEWSTR; }} Echo Zh2py::conv (' Imperial Concubine ');//fecho zh2py::conv (' Chinese People's Republic of China ');//chinese ZHRMGHG
PHP Chinese to Pinyin first letter question