(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
levenshtein — Calcule la distance Levenshtein entre deux chaînes
$string1
,$string2
,$insertion_cost
= 1,$replacement_cost
= 1,$deletion_cost
= 1 La distance Levenshtein est définie comme le nombre minimal de caractères qu'il faut remplacer, insérer ou supprimer pour transformer la chaîne string1
en string2
. La complexité de l'algorithme est en O(m*n)
, où n
et m
sont les tailles respectives de string1
et string2
: c'est plutôt bien, en comparaison de similar_text(), qui est en O(max(n,m)**3)
, mais cela reste très coûteux.
Si insertion_cost
, replacement_cost
et/oru deletion_cost
sont différent de 1
, l'algorithme s'adapte pour choisir la transformation la moins coûteuse. E.g. si $insertion_cost + $deletion_cost < $replacement_cost
, Aucun remplacement ne sera effectué, mais plutôt des insertions et suppressions.
string1
Une des chaînes à évaluer.
string2
Une des chaînes à évaluer.
insertion_cost
Définit le coût de l'insertion.
replacement_cost
Définit le coût du remplacement.
deletion_cost
Définit le coût de l'effacement.
Cette fonction retourne la distance Levenshtein entre deux chaînes de caractères.
Version | Description |
---|---|
8.0.0 | Antérieur à cette version, levenshtein() devait être appelée avec soit deux soit cinq arguments. |
8.0.0 | Antérieur à cette version, levenshtein() retournait -1 si l'une des chaînes d'arguments dépassait 255 caractères. |
Exemple #1 Exemple avec levenshtein()
<?php
// mot mal orthographié
$input = 'carrrot';
// tableau de mots à vérifier
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');
// aucune distance de trouvée pour le moment
$shortest = -1;
// boucle sur les mots pour trouver le plus près
foreach ($words as $word) {
// calcule la distance avec le mot mis en entrée,
L'exemple ci-dessus va afficher :
Mot entré : carrrot Vous voulez dire : carrot ?