Overview

Namespaces

  • None
  • Wei
    • Validator

Classes

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