Hướng dẫn damerau levenshtein distance php - damerau levenshtein khoảng cách php

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

/**
* Tìm DamerauTHER Levenshtein khoảng cách giữa hai chuỗi
*
* @param chuỗi $ Nguồn
* @param chuỗi $ Dest
* @return Int DamerauTHER Levenshtein khoảng cách
*/
FunctionDistance ($ Nguồn, $ Dest) distance($source, $dest)
{
if ($ source == $ dest) { ($source == $dest) {
return0; 0;
}
$ slen = strlen ($ nguồn);slen = strlen($source);
$ dlen = Strlen ($ Dest);dlen = strlen($dest);
if ($ slen == 0) { ($slen == 0) {
trả lại $ dlen; $dlen;
} khác {else {
if ($ dlen == 0) { ($dlen == 0) {
trả lại $ slen; $slen;
}
}
$ slen = strlen ($ nguồn);prevRow = range(0, $dlen);
$ dlen = Strlen ($ Dest);$i = 0; $i < $slen; $i++) {
if ($ slen == 0) {thisRow = array($i + 1);
trả lại $ dlen;char = $source[$i];
} khác {prev_char = $source[$i - 1] ?? '';
if ($ dlen == 0) {$j = 0; $j < $dlen; $j++) {
trả lại $ slen;cost = $char == $dest[$j] ? 0 : 1;
$ prevrow = phạm vi (0, $ dlen);thisRow[$j + 1] = min(
for ($ i = 0; $ i <$ slen; $ i ++) {prevRow[$j + 1] + 1, // deletion
$ thisRow = mảng ($ i + 1);thisRow[$j] + 1, // insertion
$ char = $ nguồn [$ i];prevRow[$j] + $cost // substitution
$ prev_char = $ nguồn [$ i - 1] ?? '';
for ($ j = 0; $ j <$ dlen; $ j ++) { ($i > 0 && $j > 0 && $char == $dest[$j - 1] && $prev_char == $dest[$j]) {
$ prevrow = phạm vi (0, $ dlen);thisRow[$j + 1] = min(
for ($ i = 0; $ i <$ slen; $ i ++) {thisRow[$j + 1],
$ thisRow = mảng ($ i + 1);preprevRow[$j - 1] + $cost // transposition
$ prev_char = $ nguồn [$ i - 1] ?? '';
}
}
$ slen = strlen ($ nguồn);preprevRow = $prevRow;
$ dlen = Strlen ($ Dest);prevRow = $thisRow;
}
$ slen = strlen ($ nguồn); $prevRow[$j];
$ dlen = Strlen ($ Dest);
if ($ slen == 0) {source = 'Helol';
trả lại $ dlen;dest = 'Hello';
} khác {'#([a-zA-Z])#u', $source, $matches);
if ($ dlen == 0) { (!empty($matches)) {
trả lại $ slen; distance($source, $dest) / 2 . PHP_EOL . "
" . PHP_EOL;
$ prevrow = phạm vi (0, $ dlen); levenshtein($source, $dest) / 2; // built-in PHP function
for ($ i = 0; $ i <$ slen; $ i ++) {else {
$ thisRow = mảng ($ i + 1); distance($source, $dest) . PHP_EOL . "
" . PHP_EOL;
$ char = $ nguồn [$ i]; levenshtein($source, $dest); // built-in PHP function
$ dlen = Strlen ($ Dest);