similar_text
(PHP 4, PHP 5, PHP 7, PHP 8)
similar_text — Calcula a similaridade entre duas strings
Descrição
Calcula a similaridade entre duas strings como descrito em Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1). Note que esta implementação não usa uma pilha como no pseudo-código de Oliver, mas chamadas recursivas que podem ou não acelerar todo o processo. Note também que a complexidade deste algoritmo é O(N**3) onde N é o tamanho da string mais longa.
Parâmetros
string1
-
A primeira string.
string2
-
A segunda string.
Note:
Trocar a
string1
de lugar com astring2
pode gerar um resultado diferente; veja o exemplo abaixo. percent
-
Ao passar referência como terceiro argumento, similar_text() irá calcular a similaridade em percentual, dividindo o resultado de similar_text() percentual média de comprimentos das strings fornecidas vezes
100
.
Valor Retornado
Retorna o número de caracteres correspondentes em ambas as strings.
O número de caracteres correspondentes é calculado encontrando-se a primeira substring comum mais longa, e depois fazendo o mesmo para os prefixos e sufixos, recursivamente. Os comprimentos de todas as substrings comuns encontradas são somados.
Exemplos
Example #1 Exemplo de similar_text() com inversão de ordem de argumentos
Este exemplo mostra que a inversão da ordem de string1
e
string2
pode gerar resultados diferentes.
<?php
$sim = similar_text('bafoobar', 'barfoo', $perc);
echo "similarity: $sim ($perc %)\n";
$sim = similar_text('barfoo', 'bafoobar', $perc);
echo "similarity: $sim ($perc %)\n";
O exemplo acima produzirá algo semelhante a:
similarity: 5 (71.428571428571 %) similarity: 3 (42.857142857143 %)
Veja Também
- levenshtein() - Calcula a distância Levenshtein entre duas strings
- soundex() - Calcula a chave soundex de uma string