levenshtein
    (PHP 3>= 3.0.17, PHP 4 >= 4.0.1, PHP 5)
levenshtein -- 
     Calculate Levenshtein distance between two strings
    
Description
int 
levenshtein ( string str1, string str2 [, int cost_ins [, int cost_rep, int cost_del]] )
     This function returns the Levenshtein-Distance between the
     two argument strings or -1, if one of the argument strings
     is longer than the limit of 255 characters.
    
     The Levenshtein distance is defined as the minimal number of
     characters you have to replace, insert or delete to transform
     str1 into str2.
     The complexity of the algorithm is O(m*n),
     where n and m are the
     length of str1 and
     str2 (rather good when compared to
     similar_text(), which is O(max(n,m)**3),
     but still expensive).
    
     In its simplest form the function will take only the two
     strings as parameter and will calculate just the number of
     insert, replace and delete operations needed to transform
     str1 into str2.
    
     A second variant will take three additional parameters that
     define the cost of insert, replace and delete operations.  This
     is more general and adaptive than variant one, but not as
     efficient.
    
     
| Example 1. levenshtein() example | 
<?php// input misspelled word
 $input = 'carrrot';
 
 // array of words to check against
 $words  = array('apple','pineapple','banana','orange',
 'radish','carrot','pea','bean','potato');
 
 // no shortest distance found, yet
 $shortest = -1;
 
 // loop through words to find the closest
 foreach ($words as $word) {
 
 // calculate the distance between the input word,
 // and the current word
 $lev = levenshtein($input, $word);
 
 // check for an exact match
 if ($lev == 0) {
 
 // closest word is this one (exact match)
 $closest = $word;
 $shortest = 0;
 
 // break out of the loop; we've found an exact match
 break;
 }
 
 // if this distance is less than the next found shortest
 // distance, OR if a next shortest word has not yet been found
 if ($lev <= $shortest || $shortest < 0) {
 // set the closest match, and shortest distance
 $closest  = $word;
 $shortest = $lev;
 }
 }
 
 echo "Input word: $input\n";
 if ($shortest == 0) {
 echo "Exact match found: $closest\n";
 } else {
 echo "Did you mean: $closest?\n";
 }
 
 ?>
 | 
 The above example will output: | Input word: carrrot
Did you mean: carrot? | 
 | 
    
     See also soundex(),
     similar_text(), and
     metaphone().