网上查到的版本都不支持多音字提取,以前用过一个JS的支持多音字提取的函数,就把PHP版本和JS版本综合了一下,写了个类,希望对开发者有用。
<?
//示例
$m=new makePy;
// $m->code='GBK'; //设定编码类别,默认为utf-8
$s="阿Q正传";
echo $m->getstr($s);
//输出结果:AQZZ|EQZZ|AQZC|EQZC
//正文
class makePy{
var $code='utf-8';
function getPy($str)
{$code=$this->code;
$arr=array();
for($i=0,$len=mb_strlen($str,$code);$i<$len;$i++)
{$single=mb_substr( $str,$i,1,$code);
$ch =$this->utf8_unicode($single,$code);//获得unicode码
$w=$this->py_mult_list[$ch];
$arr[]=($w)?$w:$this->getfirstchar($single);
}
$result=array("");
foreach($arr as $v)
{$result=$this->makePY_list($v,$result);
}
return implode("|",$result);
}
function makePY_list($str,$arr)
{for($i=0,$len=strlen($str);$i<$len;$i++)
{foreach($arr as $t)
{$re[]=$t.$str[$i];}
}
return $re;
}
//读取utf8字符的unicode