La función levenshtein()
en PHP permite calcular la "distancia de Levenshtein" entre dos cadenas, es decir, el número mínimo de operaciones (inserciones, eliminaciones o sustituciones de caracteres) necesarias para transformar una cadena en otra. Esta función es útil en tareas como la corrección de errores tipográficos, la búsqueda aproximada de palabras y la comparación de textos en aplicaciones de procesamiento de texto.
levenshtein()
en PHP?
levenshtein()
es una función incorporada en PHP que mide cuán diferentes son dos cadenas al contar las operaciones necesarias para hacerlas iguales. Cuanto menor es la distancia, mayor es la similitud entre las dos cadenas.
int levenshtein ( string $str1 , string $str2 [, int $cost_ins , int $cost_rep , int $cost_del ] )
Si los valores de costo no se especifican, la función aplicará el valor predeterminado de 1 para cada operación.
La función devuelve un número entero representando la distancia de Levenshtein entre las dos cadenas. Si la distancia es alta, las cadenas son menos similares.
Parámetro | Tipo | Descripción | Valor por defecto |
---|---|---|---|
$cost_ins
|
int | Costo de una inserción (agregar un carácter) | 1 |
$cost_rep
|
int | Costo de una sustitución (reemplazar un carácter) | 1 |
$cost_del
|
int | Costo de una eliminación (eliminar un carácter) | 1 |
levenshtein()
Este ejemplo compara dos palabras similares y calcula su distancia de Levenshtein.
<?php
$str1 = "casa";
$str2 = "caza";
$distancia = levenshtein($str1, $str2);
echo "La distancia de Levenshtein entre '$str1' y '$str2' es: $distancia"; // Resultado: 1
En este ejemplo, se asigna un costo diferente para cada tipo de operación.
<?php
$str1 = "kitten";
$str2 = "sitting";
// Asigna costos de inserción, sustitución y eliminación
$cost_ins = 2;
$cost_rep = 3;
$cost_del = 1;
$distancia = levenshtein($str1, $str2, $cost_ins, $cost_rep, $cost_del);
echo "La distancia de Levenshtein con costos personalizados entre '$str1' y '$str2' es: $distancia";
Este ejemplo muestra cómo usar levenshtein()
para encontrar la palabra más cercana a una entrada con errores tipográficos.
<?php
$entrada = "casa";
$palabras = ["caza", "caso", "cosa", "casita"];
$mejor_match = "";
$distancia_minima = -1;
foreach ($palabras as $palabra) {
$distancia = levenshtein($entrada, $palabra);
if ($distancia_minima === -1 || $distancia < $distancia_minima) {
$distancia_minima = $distancia;
$mejor_match = $palabra;
}
}
echo "La palabra más cercana a '$entrada' es: $mejor_match con una distancia de $distancia_minima";
La palabra más cercana a 'casa' es: caza con una distancia de 1
Para más detalles sobre levenshtein()
y su uso en PHP, visita la documentación oficial de PHP.
Jorge García
Fullstack developer