La funzione levenshtein() in php

Nel linguaggio Php la funzione levenshtein() calcola la distanza di Levenshtein tra due stringhe di testo, ossia il grado di somiglianza tra due parole.

La sintassi

levenshtein ( $str1 , $str2 );

Dove gli argomenti $str1 e $str2 sono le stringhe da confrontare.

La funzione restituisce un numero intero pari al numero di modifiche necessarie per rendere uguali le due stringhe.

  • 0 le stringhe sono identiche
  • 1 se occorre una sola modifica per renderle uguali
  • 2 se occorrono due modifiche. E così via.

Attenzione. La funzione restituisce -1 se una delle due stringhe è più lunga di 255 caratteri.

La funzione si basa sull'omonimo algoritmo di Levenshtein.

Misura il numero di operazioni necessarie per trasformare una stringa in un'altra.

Un esempio pratico

Definisco due stringhe alfanumeriche $str1 e $str2

$str1="text";
$str2="test";

Le due stringhe sono simili ma non identiche.

Poi eseguo la funzione levenshtein()

levenshtein($str1, $str2);

La funzione restituisce in output il numero intero 1.

E' infatti necessario una sola operazione, sostituire la "s" di "test" con la "x" di text, per rendere uguali le due stringhe.

Pertanto, le due stringhe sono molto simili.

Come configurare l'algoritmo di levenshtein

La funzione levenshtein() ha altri tre argomenti opzionali che mi permettono di personalizzare i pesi, ossia l'importanza, delle singole operazioni di modifica della stringa.

levenshtein ( $str1 , $str2 [ , $ins , $sos , $can ] );

Dove gli argomenti $ins, $sos e $can sono numeri interi costanti

  • $ins è la costante assegnata all'operazione di inserimento di un carattere.
  • $sos è la costante assegnata all'operazione di sostituzione di un carattere.
  • $del è la costante assegnata all'operazione di cancellazione di un carattere.

Di default ogni argomento è uguale a uno (1).

Nota. La funzione levenshtein() ha una complessità O(m*n) dove m e n sono due numeri interi che misurano rispettivamente la lunghezza di caratteri della prima e della seconda stringa da confrontare.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Il linguaggio Php

FAQ