php查询相似度最高的字符串的方法
本文实例讲述了php查询相似度最高的字符串的方法。分享给大家供大家参考。具体如下:
根据传入的字符串和数组,返回数组中相似度最高的字符串
1.PHP代码如下:
functionclosest_word($input,$words){ $shortest=-1; foreach($wordsas$word){ $lev=levenshtein($input,$word); if($lev==0){ $closest=$word; $shortest=0; break; } if($lev<=$shortest||$shortest<0){ $closest=$word; $shortest=$lev; } } return$closest; }
2.代码示例如下:
//根据传入的州名(可能客户有输错),返回相似度最高的州名称 $united_state_list=array( 'AL'=>"Alabama", 'AK'=>"Alaska", 'AZ'=>"Arizona", 'AR'=>"Arkansas", 'CA'=>"California", 'CO'=>"Colorado", 'CT'=>"Connecticut", 'DE'=>"Delaware", 'DC'=>"DistrictOfColumbia", 'FL'=>"Florida", 'GA'=>"Georgia", 'HI'=>"Hawaii", 'ID'=>"Idaho", 'IL'=>"Illinois", 'IN'=>"Indiana", 'IA'=>"Iowa", 'KS'=>"Kansas", 'KY'=>"Kentucky", 'LA'=>"Louisiana", 'ME'=>"Maine", 'MD'=>"Maryland", 'MA'=>"Massachusetts", 'MI'=>"Michigan", 'MN'=>"Minnesota", 'MS'=>"Mississippi", 'MO'=>"Missouri", 'MT'=>"Montana", 'NE'=>"Nebraska", 'NV'=>"Nevada", 'NH'=>"NewHampshire", 'NJ'=>"NewJersey", 'NM'=>"NewMexico", 'NY'=>"NewYork", 'NC'=>"NorthCarolina", 'ND'=>"NorthDakota", 'OH'=>"Ohio", 'OK'=>"Oklahoma", 'OR'=>"Oregon", 'PA'=>"Pennsylvania", 'RI'=>"RhodeIsland", 'SC'=>"SouthCarolina", 'SD'=>"SouthDakota", 'TN'=>"Tennessee", 'TX'=>"Texas", 'UT'=>"Utah", 'VT'=>"Vermont", 'VA'=>"Virginia", 'WA'=>"Washington", 'WV'=>"WestVirginia", 'WI'=>"Wisconsin", 'WY'=>"Wyoming" ); $input_state='Wiscsin'; $state=closest_word($input_state,array_values($united_state_list)); echo$state;
希望本文所述对大家的php程序设计有所帮助。