array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.similar-text.php', 1 => 'similar_text', ), 'up' => array ( 0 => 'ref.strings.php', 1 => 'Funções de String', ), 'prev' => array ( 0 => 'function.sha1.php', 1 => 'sha1', ), 'next' => array ( 0 => 'function.soundex.php', 1 => 'soundex', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/strings/functions/similar-text.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
similar_text — Calcula a similaridade entre duas strings
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.
string1
A primeira string.
string2
A segunda string.
Nota:
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
.
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.
Exemplo #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 %)