- mb_strlen: documentation ( source)
<?php
function edit_distance_ond($str1 ,$str2){
$array = array();
$x = 0;
$y = 0;
$offset = mb_strlen($str1);
$array[$offset + 1] = 0;
for($D = 0; $D <= mb_strlen($str1) + mb_strlen($str2); $D++){
for($k = -$D; $k <= $D; $k += 2){
if($k == -$D || $k != $D && $array[$k-1+$offset] < $array[$k+1+$offset])
$x = $array[$k+1+$offset];
else
$x = $array[$k-1+$offset] + 1;
$y = $x - $k;
while($x < mb_strlen($str1) && $y < mb_strlen($str2) && $str1[$x] == $str2[$y]){
$x++;
$y++;
}
$array[$k+$offset] = $x;
if($x >= mb_strlen($str1) && $y >= mb_strlen($str2))
return $D;
}
}
return -1;
}
echo edit_distance_ond("abc","abd");
?>