本文实例讲述了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程序设计有所帮助。