汉字转汉语拼音
作者QQ:67065435 QQ群:821635552
本站内容全部为作者原创,转载请注明出处!
php文件代码
<?php class ChineseToPinyin { private $chinese_map; /** * ChineseToPinyin constructor. */ public function __construct() { $this->chinese_map = json_decode(file_get_contents(__DIR__ . '/chinese_map.json'), true); } /** * 将单个汉字的GBK编码对应的拼音输出 * @param $gbk_code * @return string */ public function charToPinyin($gbk_code) { if ($gbk_code > 0 && $gbk_code < 160) { return chr($gbk_code); } elseif ($gbk_code < -20319 || $gbk_code > -10247) { return chr(0); } else { $result = chr(0); foreach ($this->chinese_map as $pinyin => $code) { if ($code > $gbk_code){ break; } $result = $pinyin; } return $result; } } /** * 将字符串内的中文逐个转拼音 * @param $utf8_str * @return array */ public function strToPinyin($utf8_str) { $gbk_str = iconv('UTF-8', 'GBK', $utf8_str); $result = []; for ($i = 0; $i < strlen($gbk_str); $i++) { $gbk_code = ord($gbk_str{$i}); if ($gbk_code > 160){ $gbk_code = ($gbk_code << 8) + ord($gbk_str{++$i}) - 65536; } $result[] = $this->charToPinyin($gbk_code); } return $result; } /** * ChineseToPinyin destructor. */ public function __destruct() { unset($this->chinese_map); } } //以下为类调用的方法 $chinese_to_pinyin = new ChineseToPinyin(); $arr = $chinese_to_pinyin->strToPinyin('将字符串内的中文逐个转拼音!@#$%^&*()_+1234567890-='); print_r($arr);
chinese_map.json
{ "a": -20319, "ai": -20317, "an": -20304, "ang": -20295, "ao": -20292, "ba": -20283, "bai": -20265, "ban": -20257, "bang": -20242, "bao": -20230, "bei": -20051, "ben": -20036, "beng": -20032, "bi": -20026, "bian": -20002, "biao": -19990, "bie": -19986, "bin": -19982, "bing": -19976, "bo": -19805, "bu": -19784, "ca": -19775, "cai": -19774, "can": -19763, "cang": -19756, "cao": -19751, "ce": -19746, "ceng": -19741, "cha": -19739, "chai": -19728, "chan": -19725, "chang": -19715, "chao": -19540, "che": -19531, "chen": -19525, "cheng": -19515, "chi": -19500, "chong": -19484, "chou": -19479, "chu": -19467, "chuai": -19289, "chuan": -19288, "chuang": -19281, "chui": -19275, "chun": -19270, "chuo": -19263, "ci": -19261, "cong": -19249, "cou": -19243, "cu": -19242, "cuan": -19238, "cui": -19235, "cun": -19227, "cuo": -19224, "da": -19218, "dai": -19212, "dan": -19038, "dang": -19023, "dao": -19018, "de": -19006, "deng": -19003, "di": -18996, "dian": -18977, "diao": -18961, "die": -18952, "ding": -18783, "diu": -18774, "dong": -18773, "dou": -18763, "du": -18756, "duan": -18741, "dui": -18735, "dun": -18731, "duo": -18722, "e": -18710, "en": -18697, "er": -18696, "fa": -18526, "fan": -18518, "fang": -18501, "fei": -18490, "fen": -18478, "feng": -18463, "fo": -18448, "fou": -18447, "fu": -18446, "ga": -18239, "gai": -18237, "gan": -18231, "gang": -18220, "gao": -18211, "ge": -18201, "gei": -18184, "gen": -18183, "geng": -18181, "gong": -18012, "gou": -17997, "gu": -17988, "gua": -17970, "guai": -17964, "guan": -17961, "guang": -17950, "gui": -17947, "gun": -17931, "guo": -17928, "ha": -17922, "hai": -17759, "han": -17752, "hang": -17733, "hao": -17730, "he": -17721, "hei": -17703, "hen": -17701, "heng": -17697, "hong": -17692, "hou": -17683, "hu": -17676, "hua": -17496, "huai": -17487, "huan": -17482, "huang": -17468, "hui": -17454, "hun": -17433, "huo": -17427, "ji": -17417, "jia": -17202, "jian": -17185, "jiang": -16983, "jiao": -16970, "jie": -16942, "jin": -16915, "jing": -16733, "jiong": -16708, "jiu": -16706, "ju": -16689, "juan": -16664, "jue": -16657, "jun": -16647, "ka": -16474, "kai": -16470, "kan": -16465, "kang": -16459, "kao": -16452, "ke": -16448, "ken": -16433, "keng": -16429, "kong": -16427, "kou": -16423, "ku": -16419, "kua": -16412, "kuai": -16407, "kuan": -16403, "kuang": -16401, "kui": -16393, "kun": -16220, "kuo": -16216, "la": -16212, "lai": -16205, "lan": -16202, "lang": -16187, "lao": -16180, "le": -16171, "lei": -16169, "leng": -16158, "li": -16155, "lia": -15959, "lian": -15958, "liang": -15944, "liao": -15933, "lie": -15920, "lin": -15915, "ling": -15903, "liu": -15889, "long": -15878, "lou": -15707, "lu": -15701, "lv": -15681, "luan": -15667, "lue": -15661, "lun": -15659, "luo": -15652, "ma": -15640, "mai": -15631, "man": -15625, "mang": -15454, "mao": -15448, "me": -15436, "mei": -15435, "men": -15419, "meng": -15416, "mi": -15408, "mian": -15394, "miao": -15385, "mie": -15377, "min": -15375, "ming": -15369, "miu": -15363, "mo": -15362, "mou": -15183, "mu": -15180, "na": -15165, "nai": -15158, "nan": -15153, "nang": -15150, "nao": -15149, "ne": -15144, "nei": -15143, "nen": -15141, "neng": -15140, "ni": -15139, "nian": -15128, "niang": -15121, "niao": -15119, "nie": -15117, "nin": -15110, "ning": -15109, "niu": -14941, "nong": -14937, "nu": -14933, "nv": -14930, "nuan": -14929, "nue": -14928, "nuo": -14926, "o": -14922, "ou": -14921, "pa": -14914, "pai": -14908, "pan": -14902, "pang": -14894, "pao": -14889, "pei": -14882, "pen": -14873, "peng": -14871, "pi": -14857, "pian": -14678, "piao": -14674, "pie": -14670, "pin": -14668, "ping": -14663, "po": -14654, "pu": -14645, "qi": -14630, "qia": -14594, "qian": -14429, "qiang": -14407, "qiao": -14399, "qie": -14384, "qin": -14379, "qing": -14368, "qiong": -14355, "qiu": -14353, "qu": -14345, "quan": -14170, "que": -14159, "qun": -14151, "ran": -14149, "rang": -14145, "rao": -14140, "re": -14137, "ren": -14135, "reng": -14125, "ri": -14123, "rong": -14122, "rou": -14112, "ru": -14109, "ruan": -14099, "rui": -14097, "run": -14094, "ruo": -14092, "sa": -14090, "sai": -14087, "san": -14083, "sang": -13917, "sao": -13914, "se": -13910, "sen": -13907, "seng": -13906, "sha": -13905, "shai": -13896, "shan": -13894, "shang": -13878, "shao": -13870, "she": -13859, "shen": -13847, "sheng": -13831, "shi": -13658, "shou": -13611, "shu": -13601, "shua": -13406, "shuai": -13404, "shuan": -13400, "shuang": -13398, "shui": -13395, "shun": -13391, "shuo": -13387, "si": -13383, "song": -13367, "sou": -13359, "su": -13356, "suan": -13343, "sui": -13340, "sun": -13329, "suo": -13326, "ta": -13318, "tai": -13147, "tan": -13138, "tang": -13120, "tao": -13107, "te": -13096, "teng": -13095, "ti": -13091, "tian": -13076, "tiao": -13068, "tie": -13063, "ting": -13060, "tong": -12888, "tou": -12875, "tu": -12871, "tuan": -12860, "tui": -12858, "tun": -12852, "tuo": -12849, "wa": -12838, "wai": -12831, "wan": -12829, "wang": -12812, "wei": -12802, "wen": -12607, "weng": -12597, "wo": -12594, "wu": -12585, "xi": -12556, "xia": -12359, "xian": -12346, "xiang": -12320, "xiao": -12300, "xie": -12120, "xin": -12099, "xing": -12089, "xiong": -12074, "xiu": -12067, "xu": -12058, "xuan": -12039, "xue": -11867, "xun": -11861, "ya": -11847, "yan": -11831, "yang": -11798, "yao": -11781, "ye": -11604, "yi": -11589, "yin": -11536, "ying": -11358, "yo": -11340, "yong": -11339, "you": -11324, "yu": -11303, "yuan": -11097, "yue": -11077, "yun": -11067, "za": -11055, "zai": -11052, "zan": -11045, "zang": -11041, "zao": -11038, "ze": -11024, "zei": -11020, "zen": -11019, "zeng": -11018, "zha": -11014, "zhai": -10838, "zhan": -10832, "zhang": -10815, "zhao": -10800, "zhe": -10790, "zhen": -10780, "zheng": -10764, "zhi": -10587, "zhong": -10544, "zhou": -10533, "zhu": -10519, "zhua": -10331, "zhuai": -10329, "zhuan": -10328, "zhuang": -10322, "zhui": -10315, "zhun": -10309, "zhuo": -10307, "zi": -10296, "zong": -10281, "zou": -10274, "zu": -10270, "zuan": -10262, "zui": -10260, "zun": -10256, "zuo": -10254 }