//Levenshtein算法,用于计算两个字符串之间的Levenshtein距离。而Levenshtein距离又称为编辑距离,是指两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 |
function _levenshtein( $src , $dst ){ |
if ( empty ( $src )) { |
return $dst ; |
} |
if ( empty ( $dst )) { |
return $src ; |
} |
$temp = array (); |
for ( $i = 0; $i <= strlen ( $src ); $i ++) { |
$temp [ $i ][0] = $i ; |
} |
for ( $j = 0; $j <= strlen ( $dst ); $j ++) { |
$temp [0][ $j ] = $j ; |
} |
for ( $i = 1; $i <= strlen ( $src ); $i ++) { |
$src_i = $src { $i - 1}; |
for ( $j = 1; $j <= strlen ( $dst ); $j ++) { |
$dst_j = $dst { $j - 1}; |
if ( $src_i == $dst_j ) { |
$cost = 0; |
} else { |
$cost = 1; |
} |
$temp [ $i ][ $j ] = min( $temp [ $i -1][ $j ]+1, $temp [ $i ][ $j -1]+1, $temp [ $i -1][ $j -1] + $cost ); |
} |
} |
return $temp [ $i -1][ $j -1]; |
} |
echo _levenshtein( "hello" , "HElloo" ); |
//该片段来自于http://yuncode.net |