(No version information available, might only be in Git)
grapheme_levenshtein — Calcula la distancia de Levenshtein entre dos cadenas en unidades de grafema
Estilo procedimental
$string1,$string2,$insertion_cost = 1,$replacement_cost = 1,$deletion_cost = 1,$locale = ""
La distancia de Levenshtein se define como el número mínimo de
clusters de grafemas que hay que reemplazar, insertar o eliminar para transformar
string1 en string2.
La complejidad del algoritmo es O(m*n),
donde n y m son la
longitud de string1 y de
string2 en unidades de grafema.
A diferencia de levenshtein(), que opera sobre bytes, esta
función cuenta clusters de grafemas Unicode, de modo que las formas compuesta y
descompuesta de un mismo carácter (por ejemplo U+00E9 y
U+0065 U+0301, que representan ambas é)
se consideran equivalentes y tienen una distancia de cero.
Si insertion_cost, replacement_cost
y/o deletion_cost son distintos de 1,
el algoritmo se adapta para elegir las transformaciones más baratas.
Por ejemplo, si $insertion_cost + $deletion_cost < $replacement_cost,
no se realizará ningún reemplazo, sino más bien inserciones y eliminaciones.
string1Una de las cadenas evaluadas para la distancia de Levenshtein. Debe ser UTF-8 válido.
string2Una de las cadenas evaluadas para la distancia de Levenshtein. Debe ser UTF-8 válido.
insertion_cost
Define el coste de la inserción. Debe ser mayor que 0.
replacement_cost
Define el coste del reemplazo. Debe ser mayor que 0.
deletion_cost
Define el coste de la eliminación. Debe ser mayor que 0.
localeLa configuración regional a utilizar.
Devuelve la distancia de Levenshtein entre las dos cadenas, medida en
unidades de grafema, o false en caso de fallo. Se debe utilizar
intl_get_error_message() para obtener detalles sobre
el fallo.
Lanza una ValueError si
insertion_cost, replacement_cost
o deletion_cost es menor o igual que
0.
Devuelve false y establece un error intl si una de las cadenas de entrada no es
UTF-8 válido, si locale no es un identificador de
configuración regional válido, o si se produce un error interno de ICU.
| Versión | Descripción |
|---|---|
| 8.5.0 | Esta función ha sido añadida. |
Ejemplo #1 Ejemplo con grapheme_levenshtein()
<?php
// Forma compuesta (NFC): U+00E9 LATIN SMALL LETTER E WITH ACUTE
$e_composed = "\u{00E9}";
// Forma descompuesta (NFD): U+0065 + U+0301 (e + acento agudo combinante)
$e_decomposed = "\u{0065}\u{0301}";
// grapheme_levenshtein los trata como el mismo cluster de grafemas
var_dump(grapheme_levenshtein($e_composed, $e_decomposed));
// levenshtein() opera sobre bytes y los ve como diferentes
var_dump(levenshtein($e_composed, $e_decomposed));
?>El ejemplo anterior mostrará:
int(0) int(3)