grapheme_levenshtein în PHP

Distanța Levenshtein dintre două texte, numărată pe caractere vizibile (grafeme), corectă pentru diacritice și emoji.

Sintaxă
grapheme_levenshtein(string $string1, string $string2, int $insertion_cost = 1, int $replacement_cost = 1, int $deletion_cost = 1, string $locale = ""): int|false

Ce face grapheme_levenshtein

Distanța Levenshtein spune câte modificări (inserări, ștergeri, înlocuiri) transformă un text în altul. levenshtein() numără octeți, așa că o literă cu diacritice (2 octeți în UTF-8) poate conta ca două modificări.

grapheme_levenshtein numără grafeme, adică ce vede omul ca un caracter. Este potrivită pentru sugestii „ai vrut să scrii…?” pe text românesc.

Parametri

Parametru Descriere
$string1, $string2 Textele comparate (UTF-8).
$insertion_cost, $replacement_cost, $deletion_cost Costul fiecărei operații (implicit 1).
$locale Opțional. Regiunea folosită la compararea caracterelor.

Ce returnează

Numărul de modificări (int), sau false la eroare.

Exemple

Exemplul 1: Diacritice: octeți față de grafeme

<?php
echo levenshtein("mașină", "masina") . " (levenshtein, pe octeți)\n";
echo grapheme_levenshtein("mașină", "masina") . " (grapheme_levenshtein)";

Rezultat

4 (levenshtein, pe octeți)
2 (grapheme_levenshtein)

Exemplul 2: Sugestie pentru un oraș scris greșit

<?php
$orase = ["Iași", "Brașov", "Timișoara", "Constanța"];
$cautat = "Brasov";

$distante = [];
foreach ($orase as $oras) {
    $distante[$oras] = grapheme_levenshtein(mb_strtolower($cautat), mb_strtolower($oras));
}
asort($distante);

echo "Ai vrut să scrii " . array_key_first($distante) . "?";

Rezultat

Ai vrut să scrii Brașov?

Greșeli frecvente

  • Compari texte cu litere mari și mici amestecate: „Iași” și „iași” sunt la distanța 1. Folosește mb_strtolower pe ambele.
  • Folosești funcția pe PHP 8.4 sau mai vechi: există doar din PHP 8.5.

Comenzi înrudite

  • levenshtein: Calculează câte modificări de caractere sunt necesare ca un text să devină altul (distanța Levenshtein).
  • similar_text: Calculează cât de asemănătoare sunt două texte, ca număr de caractere comune și ca procent.
  • grapheme_str_split: Împarte un text în caractere așa cum le vede omul (grafeme), inclusiv emoji compuse și litere cu semne separate.
  • soundex / metaphone: Calculează o cheie fonetică: cuvintele care se pronunță asemănător (în engleză) primesc aceeași cheie.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: grapheme_levenshtein

Ai o nelămurire despre utilizarea comenzii grapheme_levenshtein sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.