本文实例讲述了php查询相似度最高的字符串的方法。分享给大家供大家参考。具体如下:
根据传入的字符串和数组,返回数组中相似度最高的字符串
1. PHP代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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. 代码示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
// 根据传入的州名(可能客户有输错),返回相似度最高的州名称
$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程序设计有所帮助。