levenshtein

funkcja

Oblicza odległość edycyjną między dwoma ciągami — minimalną liczbę wstawień, usunięć i zamian znaków potrzebnych do przekształcenia jednego w drugi.

levenshtein(string $string1, string $string2): int

levenshtein zwraca odległość Levenshteina — minimalną liczbę operacji (wstawienie, usunięcie, zamiana jednego znaku), które przekształcą $string1 w $string2. Im mniejsza wartość, tym bardziej podobne ciągi. Wynik 0 oznacza identyczne ciągi.

<?php
declare(strict_types=1);

$wpisane = 'wiadmosc';     // literówka: brakuje 'o'
$poprawne = 'wiadomosc';

$dystans = levenshtein($wpisane, $poprawne);
echo $dystans; // wynik: 1

if ($dystans <= 2) {
    echo 'Czy miałeś na myśli: ' . htmlspecialchars($poprawne) . '?';
}

Dobór progu: wartość <= 1 to zwykła literówka (jeden klawisz), <= 2 to niewielkie podobieństwo, >= 3 ciągi są już mocno różne.

Uwaga na UTF-8. levenshtein w PHP liczy operacje na bajtach, nie na znakach. Polska litera jak ó zajmuje 2 bajty w UTF-8, więc zamiana kotkót daje dystans 2, nie 1. Jeśli walidujesz polskie teksty, rozważ wcześniejszą transliterację (iconv) lub dedykowaną bibliotekę obsługującą znaki wielobajtowe.

📘 Naucz się w lekcji →