levenshtein
(PHP 4 >= 4.0.1, PHP 5)
levenshtein — Calculate Levenshtein distance between two strings
Description
int levenshtein
( string $str1
, string $str2
)
int levenshtein
( string $str1
, string $str2
, int $cost_ins
, int $cost_rep
, int $cost_del
)
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.
Parameters
-
str1
-
One of the strings being evaluated for Levenshtein distance.
-
str2
-
One of the strings being evaluated for Levenshtein distance.
-
cost_ins
-
Defines the cost of insertion.
-
cost_rep
-
Defines the cost of replacement.
-
cost_del
-
Defines the cost of deletion.
Return Values
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.
Examples
Example #1 levenshtein() example
<?php
$input = 'carrrot';
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');
$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;
}
}
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?