(No version information available, might only be in Git)
grapheme_levenshtein — Calcule la distance de Levenshtein entre deux chaînes en unités de graphèmes
Style procédural
$string1,$string2,$insertion_cost = 1,$replacement_cost = 1,$deletion_cost = 1,$locale = ""
La distance de Levenshtein est définie comme le nombre minimal de
clusters de graphèmes qui doivent être remplacés, insérés ou supprimés pour
transformer string1 en string2.
La complexité de l'algorithme est O(m*n),
où n et m sont les longueurs de
string1 et string2
en unités de graphèmes.
Contrairement à levenshtein(), qui opère sur les octets,
cette fonction compte les clusters de graphèmes Unicode, de sorte que les
formes composée et décomposée d'un même caractère (par exemple
U+00E9 et U+0065 U+0301, représentant
tous deux é) sont traitées comme équivalentes et ont une
distance de zéro.
Si insertion_cost, replacement_cost
et/ou deletion_cost ne sont pas égaux à 1,
l'algorithme s'adapte pour choisir les transformations les moins coûteuses.
Par exemple, si $insertion_cost + $deletion_cost < $replacement_cost,
aucun remplacement ne sera effectué, mais des insertions et des suppressions
seront réalisées à la place.
string1L'une des chaînes évaluées pour la distance de Levenshtein. Doit être de l'UTF-8 valide.
string2L'une des chaînes évaluées pour la distance de Levenshtein. Doit être de l'UTF-8 valide.
insertion_cost
Définit le coût d'une insertion. Doit être supérieur à 0.
replacement_cost
Définit le coût d'un remplacement. Doit être supérieur à 0.
deletion_cost
Définit le coût d'une suppression. Doit être supérieur à 0.
localeLocale à utiliser.
Retourne la distance de Levenshtein entre les deux chaînes, mesurée en
unités de graphèmes, ou false en cas d'échec. Utilisez
intl_get_error_message() pour obtenir des détails
sur l'échec.
Lève une ValueError si
insertion_cost, replacement_cost
ou deletion_cost est inférieur ou égal à
0.
Retourne false et définit une erreur intl si l'une ou l'autre des
chaînes d'entrée n'est pas de l'UTF-8 valide, si
locale n'est pas un identifiant de locale valide,
ou si une erreur ICU interne se produit.
| Version | Description |
|---|---|
| 8.5.0 | Cette fonction a été ajoutée. |
Exemple #1 Exemple avec grapheme_levenshtein()
<?php
// Forme composée (NFC) : U+00E9 LATIN SMALL LETTER E WITH ACUTE
$e_compose = "\u{00E9}";
// Forme décomposée (NFD) : U+0065 + U+0301 (e + accent aigu combinant)
$e_decompose = "\u{0065}\u{0301}";
// grapheme_levenshtein les traite comme le même cluster de graphèmes
var_dump(grapheme_levenshtein($e_compose, $e_decompose));
// levenshtein() opère sur les octets et les voit comme différents
var_dump(levenshtein($e_compose, $e_decompose));
?>L'exemple ci-dessus va afficher :
int(0) int(3)