php如何在字串池中匹配出相似度最高的字符串?本文主要介绍了php查询相似度最高的字符串的方法,涉及php操作字符串及数组实现相似度算法的技巧,希望对大家有所帮助。
根据传入的字符串和数组,返回数组中相似度最高的字符串
1. php代码如下:
function closest_word($input, $words) {
$shortest = -1;
foreach ($words as $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'=>"district of columbia",
'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'=>"new hampshire",
'nj'=>"new jersey",
'nm'=>"new mexico",
'ny'=>"new york",
'nc'=>"north carolina",
'nd'=>"north dakota",
'oh'=>"ohio",
'ok'=>"oklahoma",
'or'=>"oregon",
'pa'=>"pennsylvania",
'ri'=>"rhode island",
'sc'=>"south carolina",
'sd'=>"south dakota",
'tn'=>"tennessee",
'tx'=>"texas",
'ut'=>"utah",
'vt'=>"vermont",
'va'=>"virginia",
'wa'=>"washington",
'wv'=>"west virginia",
'wi'=>"wisconsin",
'wy'=>"wyoming"
);
$input_state = 'wiscsin';
$state = closest_word($input_state ,array_values($united_state_list));
echo $state;
相关推荐:
php 字符串分割和比较介绍
关于php 字符串函数的详细介绍
php 字符串常用函数
以上就是php查询相似字符串的方法的详细内容。