?? ??????? ?????? ???? ???? ?? ????? PHP? ?????, ???? ??? ????? ??? ??? ???? ?? ? ????? ??????. ??? ???? ???? ????? ????? ????? ??? ???? ??? ??? ????? ???? ??? ???? ?? ??? ???????.
???:
- $py = new PinYin();
- $ all_py = $py->get_all_py("武國偉"); //['wu','guo','wei'] ??, ??? ?? ? ?? ??? ??('',$all_py)
- $first_py = $py->get_first_py($all_py);//wgw ??
- $first_letter = $py->get_first_letter($all_py);//wgw ??
?? ??
????:
- /**
- *---------------------------------- -- --------
- * PHP? ??? ???? ??
- * ------------- -- -------------
- * ???:
- * $py = new PinYin();
- * $all_py = $py->get_all_py("武國偉"); //['wu','guo','wei'] ??, ??? ?? ? ?? ??? ??('',$all_py)
- * $first_py = $py->get_first_py($all_py);//wgw ??
- * $first_letter = $py->get_first_letter($all_py);//wgw ??
- *
- * ---- --------------------------------- ----
- */
- class PinYin
- {
-
- private $dict_list = ?? (
- 'a' => -20319, 'ai' => -20317, 'an' => -20304, 'ang' => -20295, 'ao' => -20292,
- 'ba' => -20283, 'bai' => -20257, 'bang' => -20230 => -20051, 'ben' => -20032, 'bi' => -20002, 'biao' => , 'bie' => -19982, 'bing' => -19805, 'bu' => ca' => -19775, 'cai' => -19774, 'can' => -19756, 'cao' => -19751 -19746, 'ceng' => -19741, 'cha' => -19728, 'chan' => -19715 ' => -19540, 'che' => -19525, 'cheng' => -19500, '?' - 19484, 'chou' => -19479, 'chui' => -19289, 'chuang' => -19281 => -19275, '?' => -19270, '??' => -19263, 'ci' => -19261, '?' => -19249, '?' => -19243, 'cu' => -19242, '??' => -19238, 'cui' => -19235, '?' => -19227, 'cuo' => -19224,
- '?' => -19218, '??' => -19212, '?' => -19038, '?' => -19023, '??' => -19018, '?' => -19006, '?' => -19003, '?' => -18996, '??' => -18977, '???' => -18961, '??' => -18952, '?' => -18783, '??' => -18774, '?' => -18773, '?' => -18763, '?' => -18756, '??' => -18741, 'dui' => -18735, '?' => -18731, '??' => -18722,
- 'e' => -18710, 'ko' => -18697, '?' => -18696,
- '?' => -18526, '?' => -18518, '?' => -18501, '??' => -18490, '?' => -18478, '?' => -18463, 'fo' => -18448, '??' => -18447, '?' => -18446,
- '?' => -18239, '??' => -18237, '?' => -18231, '??' => -18220, '??' => -18211, 'ge' => -18201, '??' => -18184, '?' => -18183, 'geng' => -18181, '?' => -18012, '??' => -17997, '?' => -17988, '??' => -17970, '??' => -17964, '??' => -17961, '?' => -17950, 'gui' => -17947,
- '?' => -17931, '??' => -17928,
- '?' => -17922, '??' => -17759, '?' => -17752, '??' => -17733, '??' => -17730, '? ??' => -17721, '?????' => -17703, '??' => -17701, '?' => -17697, '?' => -17692, '??' => -17683, 'hu' => -17676, '?' => -17496, '??' => -17487, '?' => -17482, '?' => -17468, '??' => -17454,
- '?' => -17433, '??' => -17427,
- '?' => -17417, '??' => -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, 'lan' => -16202, '??' => -16187, '???' => -16180, '?' => -16171, '??' => -16169, '??' => -16158, '?' => -16155, '??' => -15959, '??' => -15958, '?' => -15944, '??' => -15933, '???' => -15920, '?' => -15915, '?' => -15903, '??' => -15889,
- '?' => -15878, '?' => -15707, '?' => -15701, 'lv' => -15681, '??' => -15667, '?' => -15661, '?' => -15659, '??' => -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, 'nv' => -14930, '??' => -14929, '??' => -14928, '??' => -14926,
- 'o' => -14922, 'ou' => -14921,
- '?' => -14914, '??' => -14908, '?' => -14902, '?' => -14894, '??' => -14889, '??' => -14882, '?' => -14873, '?' => -14871, '??' => -14857, '??' => -14678, '???' => -14674, '??' => -14670, '?' => -14668, '?' => -14663, '?' => -14654, '?' => -14645,
- '?' => -14630, '??' => -14594, '??' => -14429, '??' => -14407, '?' => -14399, 'qie' => -14384, '?' => -14379, '?' => -14368, 'qiong' => -14355, '??' => -14353, 'qu' => -14345, '?' => -14170, 'que' => -14159, 'qun' => -14151,
- '?' => -14149, '??' => -14145, '??' => -14140, '??' => -14137, '?' => -14135, '?' => -14125, '?' => -14123, '?' => -14122, '?' => -14112, '?' => -14109, '??' => -14099, '??' => -14097, '??' => -14094, '??' => -14092,
- '?' => -14090, '??' => -14087, '?' => -14083, '?' => -13917, '??' => -13914, 'se' => -13910, '?' => -13907, '?' => -13906, '?' => -13905, '??' => -13896, '?' => -13894, '?' => -13878, '??' => -13870, '??' => -13859, '?' => -13847, '?' => -13831, '?' => -13658, '?' => -13611, '?' => -13601, '??' => -13406, '???' => -13404, '??' => -13400, '??' => -13398, '??' => -13395, '?' => -13391, '??' => -13387, '?' => -13383, '??' => -13367, 'sou' => -13359, '?' => -13356, '??' => -13343, '??' => -13340, '??' => -13329, '??' => -13326,
- '?' ??=> -13318, '??' => -13147, '???' => -13138, '?' => -13120, '??' => -13107, '?' => -13096, '?' => -13095, 'ti' => -13091, '??' => -13076, '???' => -13068, '???' => -13063, '?' => -13060, '?' => -12888, '??' => -12875, '?' => -12871, '??' => -12860, 'tui' => -12858, 'tun' => -12852, '??' => -12849,
- '?' => -12838, '??' => -12831, '?' => -12829, '?' => -12812, '??' => -12802, '?' => -12607, '?' => -12597, '?' => -12594, '?' => -12585,
- 'xi' => -12556, '?' => -12359, '??' => -12346, '?' => -12320, '??' => -12300, 'xie' => -12120, '?' => -12099, '?' => -12089, 'xiong' => -12074, '?' => -12067, 'xu' => -12058, '??' => -12039, 'xue' => -11867, 'xun' => -11861,
- 'ya' => -11847, 'yan' => -11798, 'yao' => -11604, 'yi' => ; -11589, 'ying' => -11358, 'yong' => -11339, ' ?' => -11303, '??' => -11077, '?' => -11067,
- 'zai' => -11052, 'zan' => -11041, 'zao' => -11024, 'zei' => , 'zen' => -11019, 'zha' => -11014, 'zhan' => -10832 > -10815, 'zhao' => -10790, 'zhen' => -10764, 'zhi' => 'zhong' => -10544, 'zhuan' => -10519, 'zhua' => -10329 ; -10328, 'zhui' => -10315, 'zhuo' => -10307, ??-10296 , 'zong' => -10281, 'zou' => -10270, 'zuan' => -10262, ' zun' => -10256, 'zuo' => -10254
- );
-
-
- /**
- * ?? ??? ???? 'Zhang Sanfeng'? ?? ?? ??? ?????. ==> ['zhang','san','feng']
- * @param $chinese
- * @ param string $ charset
- * @return ??
- */
- ?? ?? get_all_py($chinese, $charset = 'utf-8')
- {
- if ($charset != 'gb2312') $chinese = $this->_U2_Utf8_Gb($chinese);
- $py = $this->zh_to_pys ($ ???);
-
- return $py;
- }
-
- /**
- * ??? ? ??? ?????(?: ['zhang','san','feng'] ==> zsf
- * @param $all_pys
- * @return string
- */
- ?? ?? get_first_py($all_pys)
- {
- if ( count($all_pys) <= 0) {
- return '';
- }
- $result = [];
- foreach ($all_pys? $one??) {
- if (is_null($one) || strlen($one) <= 0) {
- ??;
- }
- $result[] = substr($one, 0, 1);
- }
- return Join('', $result);
- }
- /**
- * ??? ? ?? ????(?: ['zhang','san','feng'] ==> z
- * @param $all_pys
- * @return string
- */
- ?? ?? get_first_letter($all_pys)
- {
- if (count($all_pys) <= 0) {
- return '';
- }
- foreach ($all_pys as $one) {
- if (is_null($ one) || strlen($one) <= 0) {
- ??;
- }
- return substr($one, 0, 1);
- }
- return ' ';
- }
- ??? ?? _U2_Utf8_Gb($_C)
- {
- $_String = '';
- if ($_C < 0x80) $_String .= $_C;
- elseif ($_C < 0x800) {
- $_String .= chr(0xC0 | $_C >> 6);
- $_String .= chr(0x80 | $_C & 0x3F);
- } elseif ($_C < 0x10000) {
- $_String .= chr(0xE0 | $_C >> 12);
- $_String .= chr(0x80 | $_C >> 6 & 0x3F );
- $_String .= chr(0x80 | $_C & 0x3F);
- } elseif ($_C < 0x200000) {
- $_String .= chr(0xF0 | $_C >> ; 18 );
- $_String .= chr(0x80 | $_C >> 12 & 0x3F);
- $_String .= chr(0x80 | $_C >> 6 & 0x3F);
- $ _String .= chr(0x80 | $_C & 0x3F);
- }
- return iconv('UTF-8', 'GB2312', $_String);
- }
-
- ??? function zh_to_py ($num, $blank = '')
- {
- if ($num > 0 && $num < 160) {
- return chr($num);
- } elseif ( $num < -20319 || $num > -10247) {
- return $blank;
- } else {
- foreach ($this->dict_list as $py => $code)
- if ($code > $num) break;
- $result = $py;
- }
- return $result;
- }
- }
-
- ??? ?? zh_to_pys( $chinese)
- {
- $result = array();
- for ($i = 0; $i < strlen($chinese); $i ) {
- $p = ord (substr ($chinese, $i, 1));
- if ($p > 160) {
- $q = ord(substr($chinese, $i, 1));
- $p = $ p * 256 $q - 65536;
- }
- $result[] = $this->zh_to_py($p);
- }
- return $result;
- }
- }
-
?? ??
|