Tayo
Astuce et Tutorial » Programmation / Developpement » Php Mysql » Aide rédigée par Zabuza
Description de cet article : levenshtein — Calcule la distance Levenshtein entre deux chaînes
Lire les commentaires

Tester similitude entre deux chaînes / variables en php : levenshtein





Objectif de l'astuce PHP:

En php, pour comparer deux chaînes, on utilise traditionnellement le signe égal ==. Si deux variables sont valides, on a bon, le cas échéant, la valeur est false.

L'objectif de ce code php est de fournir un "pourcentage" de similitude entre deux variables.

 

Comme indiqué plus haut, habituellement, si l'on souhaite comparer deux chaînes on utilise simplement :

[code=php]<?php if ('plage' == 'soleil') { echo 'Vrai !' ; } ?>[/code]


Néanmoins, la fonction php levenshtein est particulièrement incroyable dans ce domaine.

Cette dernière va simplement analyser nos variables, pour en retourner une "distance". Testons cette fonction:


Mini tutoriel levenshtein


levenshtein ( string $str1 , string $str2 )


Vous l'aurez compris, on place nos deux variables ( chaînes ) $string1 et $string2.

[code=php]<?php echo levenshtein('testez','tester') ; ?>[/code]



Le résultat de ce code affichera 1 ( soit 1 différence ). En effet, la première chaîne finie par un "z" la seconde par un "r".

Deux variables clairement similaires affichent 0 ( aucune différence ).



A savoir :

levenshtein est limité à 255 caractères, ce qui peut s'avérer handicapant.

levenshtein s'avère très rapide. Comptez quelques millièmes pour plus de 1000 utilisations.


Les autres fonctions pour comparer des chaînes


Levenshtein n'est pas seul !

Il existe d'autres fonctions, crées par diverses personnes, similaires ( jeu de mot pourri inside ).



Voici la fonction "similaire" qui outrepasse la limite de 255 caractères. Celle-ci s'avère 30% plus lente que levenshtein.

Son utilisation est habituelle :

similaire('tester','testez').

Le résultat affiché sera en pourcentage XX%. 100% signifiant que les deux "textes" sont parfaitement les même.



[code=php]<?php

function similaire($str1, $str2) {




    $strlen1=strlen($str1);




    $strlen2=strlen($str2);




    $max=max($strlen1, $strlen2);






    $splitSize=250;




    if($max>$splitSize)




    {




        $lev=0;




        for($cont=0;$cont<$max;$cont+=$splitSize)




        {




            if($strlen1<=$cont || $strlen2<=$cont)




            {




                $lev=$lev/($max/min($strlen1,$strlen2));




                break;




            }




            $lev+=levenshtein(substr($str1,$cont,$splitSize), substr($str2,$cont,$splitSize));




        }




    }




    else




    $lev=levenshtein($str1, $str2);






    $porcentage= -100*$lev/$max+100;




    if($porcentage>75)




    similar_text($str1,$str2,$porcentage);




 return $porcentage;




} ?>[/code]





réduireNews
réduireTutoriel lié
  • Tester similitude entre deux chaînes / variab..
    levenshtein — Calcule la distance Levenshtein entre deux chaînes
  • Convertir chaîne javascript en nombre
    Convertir
  • Php, Bien comprendre les variables
    Php variables, $var , guillemets, sans guillemets
  • Tv sur ordinateur Free tutorial
    Réservé aux abonnés du FAI Free, voir la tv sur son pc
  • Dans la même catégorie : Php Mysql

    Quand Wamp vous affiche que des messages Forbidden

    Passer l'activation de Windows 7 temporairement avec invite de commande
    réduireSocial

    rss 3D png rss 3D png


    Pseudo :
    Pass :
    Les lecteurs ont donné une note moyenne de :
    note 10
    Note: 10 sur 10

    Donnez votre note à ce tuto sur 10 :

    Script pour charger une publicité une fois que la page web est en place

    Quand Wamp vous affiche que des messages Forbidden

    Comment changer du texte dans toute une base de donnée mysql

    Liste des commentaires pour Tester similitude entre deux chaînes / variables en php : levenshtein


    Il y a 7 années, 1 mois
    C'est beau ... bluffant ;)
    Votre PseudoIl y a 0mn
    Votre commentaire forum
    Vous avez la parole
    Laissez un commentaire sur cet article.
    Pseudo :


    Facultatif : Cliquez ici pour choisir une tête
    Votre email ( non publié ) :

    Image anti spam :
    Code Image
    Recopier les 5 chiffres de cette image :






    Prendre contact avec Tayo.fr : Formulaire Tayo

    Tayo.fr, copyright jusqu'en 2233 ( Au moins ! ).