Maison >php教程 >PHP源码 >查询相似度最高的字符串

查询相似度最高的字符串

PHP中文网
PHP中文网original
2016-05-25 17:12:351689parcourir

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

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(&#39;AL&#39;=>"Alabama",&#39;AK&#39;=>"Alaska",&#39;AZ&#39;=>"Arizona",&#39;AR&#39;=>"Arkansas",&#39;CA&#39;=>"California",&#39;CO&#39;=>"Colorado",&#39;CT&#39;=>"Connecticut",&#39;DE&#39;=>"Delaware",&#39;DC&#39;=>"District Of Columbia",&#39;FL&#39;=>"Florida",&#39;GA&#39;=>"Georgia",&#39;HI&#39;=>"Hawaii",&#39;ID&#39;=>"Idaho",&#39;IL&#39;=>"Illinois",&#39;IN&#39;=>"Indiana",&#39;IA&#39;=>"Iowa",&#39;KS&#39;=>"Kansas",&#39;KY&#39;=>"Kentucky",&#39;LA&#39;=>"Louisiana",&#39;ME&#39;=>"Maine",&#39;MD&#39;=>"Maryland",&#39;MA&#39;=>"Massachusetts",&#39;MI&#39;=>"Michigan",&#39;MN&#39;=>"Minnesota",&#39;MS&#39;=>"Mississippi",&#39;MO&#39;=>"Missouri",&#39;MT&#39;=>"Montana",&#39;NE&#39;=>"Nebraska",&#39;NV&#39;=>"Nevada",&#39;NH&#39;=>"New Hampshire",&#39;NJ&#39;=>"New Jersey",&#39;NM&#39;=>"New Mexico",&#39;NY&#39;=>"New York",&#39;NC&#39;=>"North Carolina",&#39;ND&#39;=>"North Dakota",&#39;OH&#39;=>"Ohio",&#39;OK&#39;=>"Oklahoma",&#39;OR&#39;=>"Oregon",&#39;PA&#39;=>"Pennsylvania",&#39;RI&#39;=>"Rhode Island",&#39;SC&#39;=>"South Carolina",&#39;SD&#39;=>"South Dakota",&#39;TN&#39;=>"Tennessee",&#39;TX&#39;=>"Texas",&#39;UT&#39;=>"Utah",&#39;VT&#39;=>"Vermont",&#39;VA&#39;=>"Virginia",&#39;WA&#39;=>"Washington",&#39;WV&#39;=>"West Virginia",&#39;WI&#39;=>"Wisconsin",&#39;WY&#39;=>"Wyoming");


$input_state = &#39;Wiscsin&#39;;
$state = closest_word($input_state ,array_values($united_state_list));
echo $state;

 以上就是查询相似度最高的字符串的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn