Articles

Le mois de la fonction PHP : différences de chaînes

  • Ecrit par Julien Pauli
  • samedi 14 avril 2007
Image pour le titre du contenu

This document is also available in English en 


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&Egrave;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&Iacute;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

A voir aussi : Plus d'info sur la distance de Levenshtein
< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter