This document is also available in English
levenshtein() est une fonction un peu particulière de manipulation des chaînes de caractères. Elle calcule la distance entre deux chaînes de caractères. C'est un nombre entier qui mesure la différence entre deux chaînes. La distance Levenshtein est définie comme le nombre minimal de caractères qu'il faut remplacer, insérer ou modifier pour transformer une chaîne en une autre.
Cette fonction permet de quantifier, c'est à dire de transformer en nombre, la différence entre deux chaînes.
Cette fonction est utile dans plusieurs domaines : filtrage de texte, correction orthographique, comparaison de chaines, detection d'erreurs de frappe...En parallèle, on trouve similar_text() qui de son coté indique le nombre de lettres identiques dans 2 mots ainsi que le pourcentage de ressemblance, tout en tenant compte de la longueur des chaines.
Exemple 1 - Eviter trop de majuscules dans une phrases
<?php $subject = 'Ce SujEt ComPorTe Un gRanD PourCenTaGE DE caRactEres En MajuSCuleS'; $subject = str_replace(' ','',$subject); $pourcentage = levenshtein ($subject, strtolower($subject))*100/strlen($subject); echo 'il y a' . $pourcentage . '% de majuscules dans ce texte'; ?>
Exemple 2 - Supposer une faute d'orthographe
<?php if (levenshtein($sqlResult['name'], $_POST['username']) <2 ){ echo 'Un utilisateur avec un nom semblable existe dÈja dans notre base'; } ?><strong> </strong>
Exemple 3 - Trouver des phrases se ressemblant
<?php $word1 = 'gatcha!'; $word2 = 'got you!'; $similitude = levenshtein(metaphone($word1),metaphone($word2)); if ($similitude < 2){ echo $word1 .' et '. $word2 .' semblent signifier la mÍme chose'; ?>
Exemple 4 - Des mots de passe trop proches
<?php
similar_text($new_password, $old_password, $percent1);
similar_text($new_password, $userid, $percent2);
if (($percent1 > 80) || ($percent2 > 80)) {
echo"Votre nouveau mot de passe doit changer significativement");
}
?>
A mémoriser
- Levenshtein() ne devrait pas être utilisée sur des chaines trop longues, au delà de 255 caractères, sont fonctionnement n'est plus assuré, et elle retourne -1
- Levenshtein() et similar_text() sont souvent associées à soundex(), en combinaison.
- Levenshtein() est plus rapide que similar_text(), grace à un algorithme de calcul moins complexe.
| < Précédent | Suivant > |
|---|
Vous pouvez ajouter votre commentaire! |


