http://www.memetang.com/View/90 轉(zhuǎn)載自
/**
* 智能匹配:計(jì)算關(guān)鍵詞與用戶(hù)信息的相似度,并匹配出信息
* $param? $str? string? 用戶(hù)回復(fù)的信息
* return array()? ? ? ? 返回匹配成功的數(shù)據(jù) 匹配失敗返回false
* @author yeguozheng
* @version V1.0 2014-3-14
*/privatefunctionintelligent_match($str){//獲取匹配關(guān)鍵詞緩存列表$list=D('Respond')->get_list_cache();$_tmp=array();//臨時(shí)數(shù)組,存儲(chǔ)臨時(shí)數(shù)據(jù)定義$_jjj=0;//匹配計(jì)數(shù)定義//關(guān)鍵詞緩存列表為空或者匹配種子為空則跳出if(!is_array($list)||!count($list)||$str==''){returnfalse;}//匹配列表進(jìn)行遍歷比較foreach($listas$k=>$v){similar_text(iconv('utf-8','gbk',$str),iconv('utf-8','gbk',$v['respond_keyword']),$similarity);//是否產(chǎn)生匹配度。如大于0則放入臨時(shí)數(shù)組內(nèi),以備后面進(jìn)行提取if(ceil($similarity)>0){//把相似度壓入數(shù)組$_tmp[]=array_merge(array('similarity'=>$similarity),$v);$_jjj++;}}//如無(wú)匹配數(shù)據(jù),跳出if($jjj===0){returnfalse;}//按匹配度進(jìn)行重新排序$simi=array();foreach($_tmpas$kk){$simi[]=$kk['similarity'];}array_multisort($simi,SORT_DESC,$_tmp);//返回?cái)?shù)據(jù)return$_tmp;}