(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
levenshtein — Cálculo de la distancia Levenshtein entre dos strings
La distancia Levenshtein se define como el número mínimo de caracteres que se tienen que sustituir, insertar o borrar para transformar str1
en str2
. La complejidad del algoritmo es O(m*n)
, donde n
y m
son la longitud de str1
y str2
(bastante bueno en comparación con similar_text(), la cual es O(max(n,m)**3), pero sigue siendo costoso).
En su forma más simple la función tomará sólo los dos strings como parámetros y calculará sólo el número de operaciones de insertar, reemplazar y eliminar, necesarias para transformar str1
en str2
.
Una segunda variante tomará tres parámetros adicionales que definen el costo de las operaciones de insertar, reemplazar y eliminar. Esto es más general y adaptable que la primera variante, pero no tan eficiente.
str1
Uno de los strings a ser evaluados para la distancia Levenshtein.
str2
Uno de los strings a ser evaluados para la distancia Levenshtein.
cost_ins
Define el costo de inserción.
cost_rep
Define el costo de reemplazo.
cost_del
Define el costo de eliminación.
Esta función devuelve la distancia Levenshtein entre los dos strings argumentos ó -1, si uno de los strings argumentos es mayor que el límite de 255 caracteres.
Ejemplo #1 Ejemplo de levenshtein()
<?php
// palabra de entrada mal escrita
$input = 'carrrot';
// array de palabras contra las cuales verificar
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');
// no se ha encontrado la distancia más corta, aun
$shortest = -1;
// bucle a través de las palabras para encontrar la más cercana
foreach ($words as $word) {
// calcula la distancia entre la palabra de entrada
El resultado del ejemplo sería:
Input word: carrrot Did you mean: carrot?