Maison  >  Article  >  développement back-end  >  PHP levenshtein()

PHP levenshtein()

王林
王林original
2024-08-29 12:54:33985parcourir

Levenshtein() est une fonction intégrée à PHP qui est utilisée pour déterminer une unité de distance appelée distance de Levenshtein par rapport à deux chaînes. La définition de la distance de Levenshtein représente le nombre total de caractères qui doivent être modifiés comme remplacer, insérer ou supprimer la chaîne d'entrée pour la transformer en une autre chaîne.

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Un poids égal est accordé aux 3 modifications ci-dessus (remplacer, supprimer, insérer) par défaut en PHP. Mais il existe une option pour nous de saisir le coût ou le poids de chacune de ces opérations en donnant les paramètres facultatifs pour ce qui précède. L'algorithme utilisé pour cette fonction a une complexité de O(a*b) où a et b sont respectivement la longueur des chaînes str1 et str2.

Il y a cependant quelques points à noter à propos de cette fonction :

  • Cette fonction levenshtein() n'est pas sensible à la casse.
  • Il existe une fonction similaire à levenshtein qui est appelée la fonction similar_text(). Par rapport à cela, la fonction levenshtein() est trop rapide mais la fonction simiar_text() renvoie des résultats plus précis avec un nombre limité de modifications nécessaires. De plus, levenshtein() est plus cher.

Syntaxe et paramètres

Nous discutons ici de la syntaxe et des paramètres :

Syntaxe :

levenshtein(str1,str2,insert,replace,delete)

Paramètres :

  • str1 : Paramètre d'entrée obligatoire requis et est la première chaîne à comparer.
  • str2 : Il s'agit de la deuxième chaîne à comparer et c'est également un paramètre obligatoire.
  • insert : Un paramètre facultatif et représente le coût auquel un caractère sera inséré.
  • replace : Également facultatif qui représente le coût auquel un personnage sera remplacé.
  • delete : Un autre paramètre facultatif représentant le coût auquel un personnage sera supprimé.

La valeur par défaut des 3 derniers paramètres est 1.

Valeur de retour : Cette fonction génère la distance de Levenshtein entre les deux chaînes d'entrée. Il renvoie la valeur -1 si même l'un des caractères de la chaîne totale dépasse 255.

Exemples de PHP levenshtein()

Prenons quelques exemples pour comprendre le fonctionnement de la fonction Levenshtein.

Exemple n°1

Code :

<?php
// PHP code to determine levenshtein distance
// between 2 strings $s1 and $s2
$s1 = 'rdo';
$s2 = 'rst';
print_r(levenshtein($s1, $s2));
?>

Sortie :

PHP levenshtein()

Il s'agit d'un exemple de base où les 2 chaînes d'entrée s1 et s2 ont un mot composé chacune de 3 lettres différentes. Maintenant, la fonction Levenshtein compare ces 2 chaînes caractère par caractère et découvre la différence dans le nombre de caractères. Ici, il y a 2 lettres qui ne sont pas en commun sur les 3. Donc pour que la première chaîne soit identique à la deuxième chaîne, nous devons y ajouter les 2 lettres « s, t » d'où la sortie 2.

Exemple n°2

Code :

<?php
// PHP code to determine levenshtein distance
// between 2 strings $s1 and $s2
$s1 = 'first string';
$s2 = 'second string';
print_r(levenshtein($s1, $s2));
?>

Sortie :

PHP levenshtein()

Dans cet exemple de base, nous pouvons connaître la distance de Levenshtein entre les 2 chaînes d'entrée qui sont représentées par s1 et s2 ici. Si nous comparons les caractères des deux chaînes, nous pouvons voir qu'elles ont un mot en commun, c'est-à-dire "chaîne". Et dans les mots restants, il compare entre les mots « premier » et « deuxième » ainsi qu'avec le mot commun « chaîne ». Ici, les seules lettres qui ne sont pas communes sont « f,e,c,o,d » et le « s » supplémentaire. Ainsi, la fonction Levenshtein renvoie la sortie sous la forme 6, ce qui signifie que ces 6 lettres sont la différence entre ces 2 chaînes d'entrée et grâce auxquelles ces 2 chaînes peuvent être rendues égales en termes de caractères.

Exemple #3

Code :

<?php
// PHP code to determine levenshtein distance
// between $s1 and $s2
$s1 = 'Common Three Words';
$s2 = 'Common Words';
echo("The Levenshtein distance is: ");
print_r(levenshtein($s1, $s2));
?>

Sortie :

PHP levenshtein()

Ici, dans cet exemple, nous pouvons voir que la première chaîne contient 3 mots alors que la deuxième chaîne ne contient que 2 mots. Et on peut remarquer que ces deux mots de la deuxième chaîne sont déjà présents dans la première chaîne. Par conséquent, la seule différence de caractères ici sera le mot « Trois » qui comporte 5 caractères. Une chose intéressante à remarquer ici est que la sortie donne 6, ce qui signifie que même l'espace supplémentaire est également considéré comme un caractère.

Exemple n°4

<?php
// Giving a misspelled word as input
$ip = 'giraffee';
// sample set array to compare with
$word_list = array('cat','dog','cow','elephant',
'giraffe','eagle','pigeon','parrot','rabbit');
// Since shortest distance is not found yet
$short = -1;
// Looping through array to find the closest word
foreach ($word_list as $word_list) {
// Calculating the levenshtein distance between
// input word and the current word
$levn = levenshtein($ip, $word_list);
// To check for the matching word
if ($levn == 0) {
// This is the closest one which is an perfect match
$closest = $word_list;
$short = 0;
// Here we break from foreach loop
// when the exact match is found
break;
}
// When the distance shown here is less than shortest distance
// found in next iteration or if the next shortest word is
// yet to be found
if ($levn <= $short || $short < 0) {
// Setting the shortest distance and one having
// closest match to the input word
$close = $word_list;
$short = $levn;
}
}
echo "Input word: $ip\n";
if ($short == 0) {
echo "The closest/exact match found to the input word is: $close\n";
} else {
echo "Did you mean to spell: $close?\n";
}
?>

Sortie :

PHP levenshtein()

L'exemple ci-dessus nous montre l'un des différents cas où cette fonction levenshtein peut être implémentée. Ici, nous aidons l'utilisateur à corriger un mot mal orthographié en le comparant avec un ensemble prédéfini d'un tableau contenant la liste des mots corrects.

Donc, au début, nous acceptons un mot saisi par l'utilisateur qui est généralement mal orthographié (girafe). Nous définissons un ensemble de noms d'animaux corrects, comme indiqué, qui a également l'orthographe correcte pour le mot d'entrée (girafe). Une boucle foreach est utilisée pour parcourir la liste des tableaux et trouver le mot le plus proche qui correspond à l'entrée et cela se fait à l'aide de la fonction levenshtein. La boucle est interrompue lorsqu'une correspondance exacte ou la plus proche est trouvée. A la fin, nous comparons la distance avec le paramètre court et si la distance est 0 cela signifie qu'une correspondance exacte est trouvée pour le mot d'entrée qui est ensuite imprimé dans la sortie.

Conclusion

Donc, fondamentalement, la fonction Levenshtein renvoie la distance en valeurs entières renvoyées en comparant caractère par caractère des 2 chaînes d'entrée qui lui sont données. Les deux premiers paramètres sont les chaînes d'entrée qui sont obligatoires et les 3 derniers paramètres sont facultatifs qui représentent le coût des opérations de suppression, d'insertion ou de remplacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP parse_str()Article suivant:PHP parse_str()