(PHP 4, PHP 5, PHP 7, PHP 8)
similar_text — Calcule la similarité de deux chaînes
$string1
, string $string2
, float &$percent
= null
): int
Calcule la similarité entre les deux chaînes string1
et string2
, selon la méthode décrite dans
Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1). Notez
que cette implémentation n'utilise pas la méthode de pile comme dans le
pseudo code d'Oliver, mais des appels récursifs, ce qui accélère ou pas
le processus. Notez que la complexité de l'algorithme est en O(N**3) où
N est la taille de la plus grande chaîne.
string1
La première chaîne.
string2
La seconde chaîne.
Note:
Inverser
string1
etstring2
peut produire des résultats différents ; voir l'exemple ci-dessous.
percent
En passant une référence en tant que troisième argument,
similar_text() va calculer la similarité en
pourcentage, en divisant le résultat de similar_text()
par la moyenne de la longueur des chaîne de caractères fournies fois
100
.
Retourne le nombre de caractères correspondant dans les deux chaîne de caractères.
Le nombre de caractères correspondant est calculés en trouvant la première plus longue sous-chaîne commune, et puis faire ceci pour les préfixes et les sufixes, de façon récursive. La longueur de toutes les sous-chaînes communes sont ajoutées.
Exemple #1 Exemple de similar_text() en inversant les arguments
Cet exemple montre qu'inverser les arguments string1
et
string2
peut produire des résultats différents.
<?php
$sim = similar_text('bafoobar', 'barfoo', $perc);
echo "similarity: $sim ($perc %)\n";
$sim = similar_text('barfoo', 'bafoobar', $perc);
echo "similarity: $sim ($perc %)\n";
Résultat de l'exemple ci-dessus est similaire à :
similarity: 5 (71.428571428571 %) similarity: 3 (42.857142857143 %)