PHP 拼音检查

是为了检查一个字符串是否为一个或多个拼音音节组成。网上搜了一下,多推荐暴力匹配,做了个字典查询的PHP,希望有用,转载请标明:guipo.com

<?php
/*
 isdanpin($str): 判断一个字符串是否为单音节
 checkshuangpin($str): 判断一个字符串是否为双拼音
 
 对音节是否为标准拼音有疑问的请自行修改字典

http://guipo.com
*/
$dict = array(
"a" => array("a","an","ai","ang","ao"),
"b" => array("ba","bo","bai","bei","bao","ban","ben","bang","beng","bi","bie","biao","bian","bin","bing","bu"),
"c" => array("cha","che","chi","chai","chao","chou","chan","chen","chang","cheng","chong","chu","chua","chuai","chuan","chuang","chui","chun","chuo",
    "ca","ce","ci","cai","cao","cou","can","cen","cang","ceng","cong","cu","cuan","cui","cun","cuo"),
"d" => array("da","de","dai","dei","dao","dou","dan","den","dang","deng","di","die","diao","diu","dian","ding","du","dun","duo","dui","duan","dong","dia"),
"e" => array("e","ei","en","eng","er"),
"f" => array("fa","fo","fei","fou","fan","fen","fang","feng","fu"),
"g" => array("ga","ge","gai","gei","gao","gou","gan","gen","gang","geng","gong","gu","gua","guai","guan","guang","gui","gun","guo"),
"h" => array("ha","he","hai","hei","hao","hou","hen","hang","heng","han","hong","hu","hua","huai","huan","huang","hui","hun","huo"),
"j" => array("ji","jia","jie","jiao","jiu","jian","jin","jiang","jing","jiong","ju","juan","jue","jun"),
"k" => array("ka","ke","kai","kou","kan","ken","kang","keng","kao","kei","kong","ku","kua","kuai","kuan","kuang","kui","kun","kuo"),
"l" => array("la","le","lai","lei","lao","lou","lan","lang","leng","li","lia","lie","liao","liu","lian","lin","liang","ling","lo","long","lu","lv","luan","lve","lun","luo"),
"m" => array("ma","mo","me","mai","mao","mou","man","men","mang","meng","mi","mie","miao","miu","mian","min","ming","mu","mei"),
"n" => array("na","nai","nan","nang","nao","ne","nei","nen","neng","ni","nian","niang","niao","nie","nin","ning","niu","nong","nou","nu","nv","nuan","nve","nuo"),
"o" => array("o","ou"),
"p" => array("pa","po","pai","pao","pou","pan","pen","pang","peng","pi","pie","piao","pian","pin","ping","pu","pei"),
"q" => array("qi","qia","qie","qiao","qiu","qian","qin","qiang","qing","qiong","qu","quan","que","qun"),
"r" => array("re","ri","rao","rou","ran","ren","rang","reng","rong","ru","rua","ruan","rui","run","ruo"),
"s" => array("sha","she","shi","shai","shao","shou","shan","shen","shang","sheng","shei","shu","shua","shuai","shuan","shuang","shui","shun","shuo",
    "sa","se","si","sai","sao","sou","san","sen","sang","seng","song","su","suan","sui","sun","suo"),
"t" => array("ta","te","tai","tao","tou","tan","tang","teng","tong","ti","tie","tiao","tian","ting","tu","tuo","tun","tuan","tui"),
"w" => array("wa","wo","wai","wei","wan","wen","wang","weng","wu"),
"x" => array("xi","xia","xie","xiao","xiu","xian","xin","xiang","xing","xiong","xu","xuan","xue","xun"),
"y" => array("ya","yao","you","yan","yang","yu","ye","yue","yuan","yi","yin","yun","ying","yo","yong"),
"z" => array("zha","zhe","zhi","zhai","zhao","zhou","zhan","zhen","zhang","zheng","zhei","zhong","zhu","zhua","zhuai","zhuan","zhuang","zhui","zhun","zhuo",
    "za","ze","zi","zai","zao","zou","zang","zeng","zan","zei","zen","zong","zu","zuan","zui","zun","zuo")
);//no i/u/v
function checkheader($str) 
{
 global $dict;
 $result = array();
 
 if (isset($dict[$str[0]])) {
  foreach ($dict[$str[0]] as $key => $value) {
   if (strpos($str, $value) === 0) {
    array_push($result, substr($str, strlen($value)));
   }   
  }
  
  if (count($result) > 0) return $result;
 }
 
 return false;
}
function isdanpin($str) 
{
 global $dict;
 
 if (isset($dict[$str[0]])) {
  foreach ($dict[$str[0]] as $key => $value) {
   if (strcasecmp($str, $value) == 0) return true;
  }
 }
 
 return false;
}
function checkshuangpin($str)
{
 $rest = checkheader($str);
 
 if (is_array($rest)) {
  foreach ($rest as $key => $value) {
   if (isdanpin($value)) return true;
  } 
 }
 return false;
}

?>