php中有个字符相似性比较函数,不过是字型层面的,不能完成字意比较的任务。

解决方案 »

  1.   

    问题很麻烦,我给你一个相似的程序。希望对你有帮助class Find{
    var $array_str;
    var $arra;
    function Find(){
    $fpsql="select keyword from mykeyword";
    $query=mysql_query($fpsql);
    $ii=0;
    $jj=0;
    $i=0;
    $j=0;
    while($array=mysql_fetch_array($query))
    {
    $this->arra[$ii]=$array[0];
    $stra=join($stra,$this->arra);
    $strc=$stra;
    $stra=substr($stra,strlen($strb),strlen($stra)-strlen($strb));
    while($i<strlen($stra))
    {
    if(ord(substr($stra,$i,1))>0xa0)
    {
    $this->array_str[$jj][$j]=substr($stra,$i,2);
    $i=$i+2;
    }
    else
    {
    $this->array_str[$jj][$j]=substr($stra,$i,1);
    $i++;
    }
    $j++;
    }
    $strb=$strc;
    $stra="";
    $ii++;
    $jj++;
    $i=0;
    $j=0;
    }
    } function F_Result($str){
    for($i=0;$i<sizeof($this->arra);$i++)
        {
    $j=0;
    $k=0;
    $stra="";
    $strb="";
        while($this->array_str[$i][$j]!="")
    {
    $position[$k]=strchr($str,$this->array_str[$i][$j]);
    if(!empty($position[$k]))
    $k++;
    $j++;
    }
    if($k==$j)
    {
    for($jj=0;$jj<$k;$jj++)
    {
    if(strlen($position[$jj])>=strlen($position[$jj+1]))
    {
    $stra=$stra."1";
    $strb=$strb."1";
    }
    else
    $stra=$stra."0";
    }
    if(substr($stra,strlen($stra)-1,1)==0)
    $stra=substr($stra,0,strlen($stra)-1);
    if(strcmp($stra,$strb)==0)
    return true;
    }
        }
    return false;
    }
    }
    先把汉字一个分开,然后再去字符串查找。然后组合。
      

  2.   

    <?
    $a="我是个中国人";
    $b="我真的是一个中国人";
    $c="我确确实实是一个中国人";
    $d="我从来都是确确实实的中国人";
    $array=array($a,$b,$c,$d);
    $fz="我永远都是一个中国人";
    function cstrcmp($basestr,$cmpstr){
    for($i=0;$i*2<strlen($basestr);$i++){
    ${"basearray".$i}=substr($basestr,$i*2,2);
    for($j=0;$j*2<strlen($cmpstr);$j++){
    ${"cmparray".$j}=substr($cmpstr,$j*2,2);
    if(${"basearray".$i}==${"cmparray".$j})
    $count=$count+2;
    }
    }
    $len=strlen($cmpstr);
    $percent=sprintf("%2.2f",$count/($len)*100);
    return $percent;
    }
    foreach($array as $cmpstr){
    $cmparray[$cmpstr]=cstrcmp($fz,$cmpstr);
    }
    $maxval=max($cmparray);
    while(list($key,$val)=each($cmparray)){
    if($val==$maxval)
    echo $key." 吻合度 %".$val."<br>";
    }
    ?>