当前位置:首页 > PHP教程 > php函数 > 列表

php查询相似度最高的字符串的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-16 10:46:58 浏览: 评论:0 

这篇文章主要介绍了php查询相似度最高的字符串的方法,涉及php操作字符串及数组实现相似度算法的技巧,具有一定参考借鉴价值,需要的朋友可以参考下,本文实例讲述了php查询相似度最高的字符串的方法,分享给大家供大家参考,具体如下:

根据传入的字符串和数组,返回数组中相似度最高的字符串

1. PHP代码如下:

  1. function closest_word($input, $words) { 
  2.     $shortest = -1; 
  3.     foreach ($words as $word) { 
  4.      $lev = levenshtein($input, $word); 
  5.      if ($lev == 0) { 
  6.       $closest = $word; 
  7.       $shortest = 0; 
  8.       break; 
  9.      } 
  10.      if ($lev <= $shortest || $shortest < 0) { 
  11.       $closest = $word; 
  12.       $shortest = $lev; 
  13.      } 
  14.     } 
  15.     return $closest; 
  16. } 

2. 代码示例如下:

  1. // 根据传入的州名(可能客户有输错),返回相似度最高的州名称 
  2. $united_state_list = array( 
  3. 'AL'=>"Alabama", 
  4. 'AK'=>"Alaska", 
  5. 'AZ'=>"Arizona", 
  6. 'AR'=>"Arkansas", 
  7. 'CA'=>"California", 
  8. 'CO'=>"Colorado", 
  9. 'CT'=>"Connecticut", 
  10. 'DE'=>"Delaware", 
  11. 'DC'=>"District Of Columbia", 
  12. 'FL'=>"Florida", 
  13. 'GA'=>"Georgia", 
  14. 'HI'=>"Hawaii", 
  15. 'ID'=>"Idaho", 
  16. 'IL'=>"Illinois", 
  17. 'IN'=>"Indiana", 
  18. 'IA'=>"Iowa", 
  19. 'KS'=>"Kansas", 
  20. 'KY'=>"Kentucky", 
  21. 'LA'=>"Louisiana", 
  22. 'ME'=>"Maine", 
  23. 'MD'=>"Maryland", 
  24. 'MA'=>"Massachusetts", 
  25. 'MI'=>"Michigan", 
  26. 'MN'=>"Minnesota", 
  27. 'MS'=>"Mississippi", 
  28. 'MO'=>"Missouri", 
  29. 'MT'=>"Montana", 
  30. 'NE'=>"Nebraska", 
  31. 'NV'=>"Nevada", 
  32. 'NH'=>"New Hampshire", 
  33. 'NJ'=>"New Jersey", 
  34. 'NM'=>"New Mexico", 
  35. 'NY'=>"New York", 
  36. 'NC'=>"North Carolina", 
  37. 'ND'=>"North Dakota", 
  38. 'OH'=>"Ohio", 
  39. 'OK'=>"Oklahoma", 
  40. 'OR'=>"Oregon", 
  41. 'PA'=>"Pennsylvania", 
  42. 'RI'=>"Rhode Island", 
  43. 'SC'=>"South Carolina", 
  44. 'SD'=>"South Dakota", 
  45. 'TN'=>"Tennessee", 
  46. 'TX'=>"Texas", 
  47. 'UT'=>"Utah", 
  48. 'VT'=>"Vermont", 
  49. 'VA'=>"Virginia", 
  50. 'WA'=>"Washington", 
  51. 'WV'=>"West Virginia", 
  52. 'WI'=>"Wisconsin", 
  53. 'WY'=>"Wyoming" 
  54. ); 
  55. $input_state = 'Wiscsin'; 
  56. $state = closest_word($input_state ,array_values($united_state_list)); 
  57. echo $state;

Tags: php字符串相似度最高

分享到: