之前面试一个搞域名相关服务的公司,有一道笔试题是如何判断一个域名是否为拼音域名,即域名是拼音组成的,如baidu.com,可以是“百度”、“拜读”、“摆渡”的拼音。可以是一个字拼音、两个字拼音、三个等等。解决思路如下,我们收集出所有汉字的拼音的集合,然后循环判断域名是否在这个集合中。具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | $pinyinArr = array ( "a" , "ai" , "an" , "ang" , "ao" , "ba" , "bai" , "ban" , "bang" , "bao" , "be" , "bei" , "ben" , "beng" , "bi" , "bian" , "biao" , "bie" , "bin" , "bing" , "bo" , "bu" , "ca" , "cai" , "can" , "cang" , "cao" , "ce" , "cen" , "ceng" , "cha" , "chai" , "chan" , "chang" , "chao" , "che" , "chen" , "cheng" , "chi" , "chong" , "chou" , "chu" , "chua" , "chuai" , "chuan" , "chuang" , "chui" , "chun" , "chuo" , "ci" , "cong" , "cou" , "cu" , "cuan" , "cui" , "cun" , "cuo" , "da" , "dai" , "dan" , "dang" , "dao" , "de" , "dei" , "dem" , "den" , "deng" , "deo" , "di" , "dia" , "dian" , "diao" , "die" , "dim" , "ding" , "diu" , "dong" , "dou" , "du" , "duan" , "dug" , "dui" , "dun" , "duo" , "e" , "ei" , "en" , "eng" , "er" , "fa" , "fan" , "fang" , "fei" , "fen" , "feng" , "fiao" , "fo" , "fou" , "fu" , "fui" , "ga" , "gai" , "gan" , "gang" , "gao" , "ge" , "gei" , "gen" , "geng" , "go" , "gong" , "gongli" , "gou" , "gu" , "gua" , "guai" , "guan" , "guang" , "gui" , "gun" , "guo" , "ha" , "hai" , "hal" , "han" , "hang" , "hao" , "he" , "hei" , "hen" , "heng" , "ho" , "hong" , "hou" , "hu" , "hua" , "huai" , "huan" , "huang" , "hui" , "hun" , "huo" , "ji" , "jia" , "jian" , "jiang" , "jiao" , "jie" , "jin" , "jing" , "jiong" , "jiu" , "jou" , "ju" , "juan" , "jue" , "jun" , "ka" , "kai" , "kan" , "kang" , "kao" , "ke" , "ken" , "keng" , "ki" , "kong" , "kou" , "ku" , "kua" , "kuai" , "kuan" , "kuang" , "kui" , "kun" , "kuo" , "la" , "lai" , "lan" , "lang" , "lao" , "le" , "lei" , "leng" , "li" , "lia" , "lian" , "liang" , "liao" , "lie" , "lin" , "ling" , "liu" , "lo" , "long" , "lou" , "lu" , "luan" , "lue" , "lun" , "luo" , "lv" , "m" , "ma" , "mai" , "man" , "mang" , "mao" , "me" , "mei" , "men" , "meng" , "meo" , "mi" , "mian" , "miao" , "mie" , "min" , "ming" , "miu" , "mo" , "mol" , "mou" , "mu" , "na" , "nai" , "nan" , "nang" , "nao" , "ne" , "nei" , "nem" , "nen" , "neng" , "ni" , "nian" , "niang" , "niao" , "nie" , "nin" , "ning" , "niu" , "nong" , "nou" , "nu" , "nuan" , "nue" , "nun" , "nung" , "nuo" , "nv" , "o" , "ou" , "pa" , "pai" , "pan" , "pang" , "pao" , "pei" , "pen" , "peng" , "pi" , "pian" , "piao" , "pie" , "pin" , "ping" , "po" , "pou" , "pu" , "qi" , "qia" , "qian" , "qiang" , "qiao" , "qie" , "qin" , "qing" , "qiong" , "qiu" , "qu" , "quan" , "que" , "qun" , "ra" , "ran" , "rang" , "rao" , "re" , "ren" , "reng" , "ri" , "rong" , "rou" , "ru" , "ruan" , "rui" , "run" , "ruo" , "sa" , "sai" , "san" , "sang" , "sao" , "se" , "sei" , "sen" , "seng" , "seo" , "sha" , "shai" , "shan" , "shang" , "shao" , "she" , "shen" , "sheng" , "shi" , "shou" , "shu" , "shua" , "shuai" , "shuan" , "shuang" , "shui" , "shun" , "shuo" , "si" , "so" , "song" , "sou" , "su" , "suan" , "sui" , "sun" , "suo" , "ta" , "tai" , "tan" , "tang" , "tao" , "te" , "teng" , "ti" , "tian" , "tiao" , "tie" , "ting" , "tong" , "tou" , "tu" , "tuan" , "tui" , "tun" , "tuo" , "wa" , "wai" , "wan" , "wang" , "wei" , "wen" , "weng" , "wo" , "wu" , "xi" , "xia" , "xian" , "xiang" , "xiao" , "xie" , "xin" , "xing" , "xiong" , "xiu" , "xu" , "xuan" , "xue" , "xun" , "ya" , "yan" , "yang" , "yao" , "ye" , "yen" , "yi" , "yin" , "ying" , "yo" , "yong" , "you" , "yu" , "yuan" , "yue" , "yun" , "za" , "zai" , "zan" , "zang" , "zao" , "ze" , "zei" , "zen" , "zeng" , "zha" , "zhai" , "zhan" , "zhang" , "zhao" , "zhe" , "zhen" , "zheng" , "zhi" , "zhong" , "zhou" , "zhu" , "zhua" , "zhuai" , "zhuan" , "zhuang" , "zhui" , "zhun" , "zhuo" , "zi" , "zo" , "zong" , "zou" , "zu" , "zuan" , "zui" , "zun" , "zuo" ); function checkPinyin( $domain , $count =0){ global $pinyinArr ; while ( $domain != '' && $domain ){ $match = '' ; foreach ( $pinyinArr as $val ){ if ( $domain == $val ){ $match = $val ; break ; } elseif ( strpos ( $domain , $val ) ===0){ $match = $val ; } } if ( $match == '' ){ return false; } $domain =preg_replace( '/^' . $match . '/' , '' , $domain ); $count ++; } return $count ; } var_dump(checkPinyin( 'baidu' )); //返回2,表示2个汉字拼音组成的域名 var_dump(checkPinyin( 'hualongxiang' )); //返回3,表示3个汉字拼音组成的域名 var_dump(checkPinyin( 'abyi' )); //返回false,表示不是拼音域名 |
上一篇:
php基础之Trait
友情提示:垃圾评论一律封号...