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程序设计有所帮助 。