pinyin.init.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. <?php
  2. if (!defined('IS_INITPHP')) exit('Access Denied!');
  3. /*********************************************************************************
  4. * InitPHP 3.3 国产PHP开发框架 扩展类库-pinyin
  5. *-------------------------------------------------------------------------------
  6. * 版权所有: CopyRight By initphp.com
  7. * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
  8. *-------------------------------------------------------------------------------
  9. * $Author:zhuli
  10. * $Dtime:2013-5-29
  11. ***********************************************************************************/
  12. class pinyinInit {
  13. private $pinyinArr = NULL;
  14. /**
  15. * 对外接口
  16. */
  17. public function pinyin($string, $utf8 = true) {
  18. $string = ($utf8 === true) ? iconv('utf-8', 'gbk//IGNORE', $string) : $string;
  19. if ($this->pinyinArr == NULL) {
  20. $this->pinyinArr = $this->pinyin_code();
  21. }
  22. $num = strlen($string);
  23. $pinyin = '';
  24. for ($i=0; $i < $num; $i++) {
  25. $temp = ord(substr($string, $i, 1));
  26. if ($temp > 160) {
  27. $temp2 = ord(substr($string, ++$i, 1));
  28. $temp = $temp * 256 + $temp2 - 65536;
  29. }
  30. if ($temp > 0 && $temp < 160) {
  31. $pinyin .= chr($temp);
  32. } elseif ($temp < -20319 || $temp > -10247){
  33. $pinyin .= '';
  34. } else {
  35. $total =sizeof($this->pinyinArr) - 1;
  36. for ($j = $total; $j >= 0; $j--) {
  37. if ($this->pinyinArr[$j][1] <= $temp) {
  38. break;
  39. }
  40. }
  41. $pinyin .= $this->pinyinArr[$j][0];
  42. }
  43. }
  44. return ($utf8==true) ? iconv('gbk', 'utf-8', $pinyin) : $pinyin;
  45. }
  46. /**
  47. * 拼音代码库
  48. * @return array
  49. */
  50. public function pinyin_code() {
  51. return array(
  52. array("a",-20319),
  53. array("ai",-20317),
  54. array("an",-20304),
  55. array("ang",-20295),
  56. array("ao",-20292),
  57. array("ba",-20283),
  58. array("bai",-20265),
  59. array("ban",-20257),
  60. array("bang",-20242),
  61. array("bao",-20230),
  62. array("bei",-20051),
  63. array("ben",-20036),
  64. array("beng",-20032),
  65. array("bi",-20026),
  66. array("bian",-20002),
  67. array("biao",-19990),
  68. array("bie",-19986),
  69. array("bin",-19982),
  70. array("bing",-19976),
  71. array("bo",-19805),
  72. array("bu",-19784),
  73. array("ca",-19775),
  74. array("cai",-19774),
  75. array("can",-19763),
  76. array("cang",-19756),
  77. array("cao",-19751),
  78. array("ce",-19746),
  79. array("ceng",-19741),
  80. array("cha",-19739),
  81. array("chai",-19728),
  82. array("chan",-19725),
  83. array("chang",-19715),
  84. array("chao",-19540),
  85. array("che",-19531),
  86. array("chen",-19525),
  87. array("cheng",-19515),
  88. array("chi",-19500),
  89. array("chong",-19484),
  90. array("chou",-19479),
  91. array("chu",-19467),
  92. array("chuai",-19289),
  93. array("chuan",-19288),
  94. array("chuang",-19281),
  95. array("chui",-19275),
  96. array("chun",-19270),
  97. array("chuo",-19263),
  98. array("ci",-19261),
  99. array("cong",-19249),
  100. array("cou",-19243),
  101. array("cu",-19242),
  102. array("cuan",-19238),
  103. array("cui",-19235),
  104. array("cun",-19227),
  105. array("cuo",-19224),
  106. array("da",-19218),
  107. array("dai",-19212),
  108. array("dan",-19038),
  109. array("dang",-19023),
  110. array("dao",-19018),
  111. array("de",-19006),
  112. array("deng",-19003),
  113. array("di",-18996),
  114. array("dian",-18977),
  115. array("diao",-18961),
  116. array("die",-18952),
  117. array("ding",-18783),
  118. array("diu",-18774),
  119. array("dong",-18773),
  120. array("dou",-18763),
  121. array("du",-18756),
  122. array("duan",-18741),
  123. array("dui",-18735),
  124. array("dun",-18731),
  125. array("duo",-18722),
  126. array("e",-18710),
  127. array("en",-18697),
  128. array("er",-18696),
  129. array("fa",-18526),
  130. array("fan",-18518),
  131. array("fang",-18501),
  132. array("fei",-18490),
  133. array("fen",-18478),
  134. array("feng",-18463),
  135. array("fo",-18448),
  136. array("fou",-18447),
  137. array("fu",-18446),
  138. array("ga",-18239),
  139. array("gai",-18237),
  140. array("gan",-18231),
  141. array("gang",-18220),
  142. array("gao",-18211),
  143. array("ge",-18201),
  144. array("gei",-18184),
  145. array("gen",-18183),
  146. array("geng",-18181),
  147. array("gong",-18012),
  148. array("gou",-17997),
  149. array("gu",-17988),
  150. array("gua",-17970),
  151. array("guai",-17964),
  152. array("guan",-17961),
  153. array("guang",-17950),
  154. array("gui",-17947),
  155. array("gun",-17931),
  156. array("guo",-17928),
  157. array("ha",-17922),
  158. array("hai",-17759),
  159. array("han",-17752),
  160. array("hang",-17733),
  161. array("hao",-17730),
  162. array("he",-17721),
  163. array("hei",-17703),
  164. array("hen",-17701),
  165. array("heng",-17697),
  166. array("hong",-17692),
  167. array("hou",-17683),
  168. array("hu",-17676),
  169. array("hua",-17496),
  170. array("huai",-17487),
  171. array("huan",-17482),
  172. array("huang",-17468),
  173. array("hui",-17454),
  174. array("hun",-17433),
  175. array("huo",-17427),
  176. array("ji",-17417),
  177. array("jia",-17202),
  178. array("jian",-17185),
  179. array("jiang",-16983),
  180. array("jiao",-16970),
  181. array("jie",-16942),
  182. array("jin",-16915),
  183. array("jing",-16733),
  184. array("jiong",-16708),
  185. array("jiu",-16706),
  186. array("ju",-16689),
  187. array("juan",-16664),
  188. array("jue",-16657),
  189. array("jun",-16647),
  190. array("ka",-16474),
  191. array("kai",-16470),
  192. array("kan",-16465),
  193. array("kang",-16459),
  194. array("kao",-16452),
  195. array("ke",-16448),
  196. array("ken",-16433),
  197. array("keng",-16429),
  198. array("kong",-16427),
  199. array("kou",-16423),
  200. array("ku",-16419),
  201. array("kua",-16412),
  202. array("kuai",-16407),
  203. array("kuan",-16403),
  204. array("kuang",-16401),
  205. array("kui",-16393),
  206. array("kun",-16220),
  207. array("kuo",-16216),
  208. array("la",-16212),
  209. array("lai",-16205),
  210. array("lan",-16202),
  211. array("lang",-16187),
  212. array("lao",-16180),
  213. array("le",-16171),
  214. array("lei",-16169),
  215. array("leng",-16158),
  216. array("li",-16155),
  217. array("lia",-15959),
  218. array("lian",-15958),
  219. array("liang",-15944),
  220. array("liao",-15933),
  221. array("lie",-15920),
  222. array("lin",-15915),
  223. array("ling",-15903),
  224. array("liu",-15889),
  225. array("long",-15878),
  226. array("lou",-15707),
  227. array("lu",-15701),
  228. array("lv",-15681),
  229. array("luan",-15667),
  230. array("lue",-15661),
  231. array("lun",-15659),
  232. array("luo",-15652),
  233. array("ma",-15640),
  234. array("mai",-15631),
  235. array("man",-15625),
  236. array("mang",-15454),
  237. array("mao",-15448),
  238. array("me",-15436),
  239. array("mei",-15435),
  240. array("men",-15419),
  241. array("meng",-15416),
  242. array("mi",-15408),
  243. array("mian",-15394),
  244. array("miao",-15385),
  245. array("mie",-15377),
  246. array("min",-15375),
  247. array("ming",-15369),
  248. array("miu",-15363),
  249. array("mo",-15362),
  250. array("mou",-15183),
  251. array("mu",-15180),
  252. array("na",-15165),
  253. array("nai",-15158),
  254. array("nan",-15153),
  255. array("nang",-15150),
  256. array("nao",-15149),
  257. array("ne",-15144),
  258. array("nei",-15143),
  259. array("nen",-15141),
  260. array("neng",-15140),
  261. array("ni",-15139),
  262. array("nian",-15128),
  263. array("niang",-15121),
  264. array("niao",-15119),
  265. array("nie",-15117),
  266. array("nin",-15110),
  267. array("ning",-15109),
  268. array("niu",-14941),
  269. array("nong",-14937),
  270. array("nu",-14933),
  271. array("nv",-14930),
  272. array("nuan",-14929),
  273. array("nue",-14928),
  274. array("nuo",-14926),
  275. array("o",-14922),
  276. array("ou",-14921),
  277. array("pa",-14914),
  278. array("pai",-14908),
  279. array("pan",-14902),
  280. array("pang",-14894),
  281. array("pao",-14889),
  282. array("pei",-14882),
  283. array("pen",-14873),
  284. array("peng",-14871),
  285. array("pi",-14857),
  286. array("pian",-14678),
  287. array("piao",-14674),
  288. array("pie",-14670),
  289. array("pin",-14668),
  290. array("ping",-14663),
  291. array("po",-14654),
  292. array("pu",-14645),
  293. array("qi",-14630),
  294. array("qia",-14594),
  295. array("qian",-14429),
  296. array("qiang",-14407),
  297. array("qiao",-14399),
  298. array("qie",-14384),
  299. array("qin",-14379),
  300. array("qing",-14368),
  301. array("qiong",-14355),
  302. array("qiu",-14353),
  303. array("qu",-14345),
  304. array("quan",-14170),
  305. array("que",-14159),
  306. array("qun",-14151),
  307. array("ran",-14149),
  308. array("rang",-14145),
  309. array("rao",-14140),
  310. array("re",-14137),
  311. array("ren",-14135),
  312. array("reng",-14125),
  313. array("ri",-14123),
  314. array("rong",-14122),
  315. array("rou",-14112),
  316. array("ru",-14109),
  317. array("ruan",-14099),
  318. array("rui",-14097),
  319. array("run",-14094),
  320. array("ruo",-14092),
  321. array("sa",-14090),
  322. array("sai",-14087),
  323. array("san",-14083),
  324. array("sang",-13917),
  325. array("sao",-13914),
  326. array("se",-13910),
  327. array("sen",-13907),
  328. array("seng",-13906),
  329. array("sha",-13905),
  330. array("shai",-13896),
  331. array("shan",-13894),
  332. array("shang",-13878),
  333. array("shao",-13870),
  334. array("she",-13859),
  335. array("shen",-13847),
  336. array("sheng",-13831),
  337. array("shi",-13658),
  338. array("shou",-13611),
  339. array("shu",-13601),
  340. array("shua",-13406),
  341. array("shuai",-13404),
  342. array("shuan",-13400),
  343. array("shuang",-13398),
  344. array("shui",-13395),
  345. array("shun",-13391),
  346. array("shuo",-13387),
  347. array("si",-13383),
  348. array("song",-13367),
  349. array("sou",-13359),
  350. array("su",-13356),
  351. array("suan",-13343),
  352. array("sui",-13340),
  353. array("sun",-13329),
  354. array("suo",-13326),
  355. array("ta",-13318),
  356. array("tai",-13147),
  357. array("tan",-13138),
  358. array("tang",-13120),
  359. array("tao",-13107),
  360. array("te",-13096),
  361. array("teng",-13095),
  362. array("ti",-13091),
  363. array("tian",-13076),
  364. array("tiao",-13068),
  365. array("tie",-13063),
  366. array("ting",-13060),
  367. array("tong",-12888),
  368. array("tou",-12875),
  369. array("tu",-12871),
  370. array("tuan",-12860),
  371. array("tui",-12858),
  372. array("tun",-12852),
  373. array("tuo",-12849),
  374. array("wa",-12838),
  375. array("wai",-12831),
  376. array("wan",-12829),
  377. array("wang",-12812),
  378. array("wei",-12802),
  379. array("wen",-12607),
  380. array("weng",-12597),
  381. array("wo",-12594),
  382. array("wu",-12585),
  383. array("xi",-12556),
  384. array("xia",-12359),
  385. array("xian",-12346),
  386. array("xiang",-12320),
  387. array("xiao",-12300),
  388. array("xie",-12120),
  389. array("xin",-12099),
  390. array("xing",-12089),
  391. array("xiong",-12074),
  392. array("xiu",-12067),
  393. array("xu",-12058),
  394. array("xuan",-12039),
  395. array("xue",-11867),
  396. array("xun",-11861),
  397. array("ya",-11847),
  398. array("yan",-11831),
  399. array("yang",-11798),
  400. array("yao",-11781),
  401. array("ye",-11604),
  402. array("yi",-11589),
  403. array("yin",-11536),
  404. array("ying",-11358),
  405. array("yo",-11340),
  406. array("yo",-11340),
  407. array("yong",-11339),
  408. array("you",-11324),
  409. array("yu",-11303),
  410. array("yuan",-11097),
  411. array("yue",-11077),
  412. array("yun",-11067),
  413. array("za",-11055),
  414. array("zai",-11052),
  415. array("zan",-11045),
  416. array("zang",-11041),
  417. array("zao",-11038),
  418. array("ze",-11024),
  419. array("zei",-11020),
  420. array("zen",-11019),
  421. array("zeng",-11018),
  422. array("zha",-11014),
  423. array("zhai",-10838),
  424. array("zhan",-10832),
  425. array("zhang",-10815),
  426. array("zhao",-10800),
  427. array("zhe",-10790),
  428. array("zhen",-10780),
  429. array("zheng",-10764),
  430. array("zhi",-10587),
  431. array("zhong",-10544),
  432. array("zhou",-10533),
  433. array("zhu",-10519),
  434. array("zhua",-10331),
  435. array("zhuai",-10329),
  436. array("zhuan",-10328),
  437. array("zhuang",-10322),
  438. array("zhui",-10315),
  439. array("zhun",-10309),
  440. array("zhuo",-10307),
  441. array("zi",-10296),
  442. array("zong",-10281),
  443. array("zou",-10274),
  444. array("zu",-10270),
  445. array("zuan",-10262),
  446. array("zui",-10260),
  447. array("zun",-10256),
  448. array("zuo",-10254),
  449. );
  450. }
  451. }