similar_text

(PHP 4, PHP 5, PHP 7, PHP 8)

similar_textCalcula la similitud entre dos strings

Descripción

similar_text(string $string1, string $string2, float &$percent = null): int

Calcula la similitud entre los dos strings string1 y string2, según el método descrito en Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1). Se debe tener en cuenta que esta implementación no utiliza el método de pila como en el pseudocódigo de Oliver, sino llamadas recursivas, lo que puede acelerar o no el proceso. Se debe tener en cuenta que la complejidad del algoritmo es de O(N**3) donde N es el tamaño del string más grande.

Parámetros

string1

El primer string.

string2

El segundo string.

Nota:

Invertir string1 y string2 puede producir resultados diferentes; ver el ejemplo a continuación.

percent

Al pasar una referencia como tercer argumento, similar_text() calculará la similitud en porcentaje, dividiendo el resultado de similar_text() por la media de la longitud de los strings proporcionados multiplicado por 100.

Valores devueltos

Devuelve el número de caracteres coincidentes en los dos strings.

El número de caracteres coincidentes se calcula encontrando la primera subcadena común más larga, y luego haciendo esto para los prefijos y sufijos, de forma recursiva. Las longitudes de todas las subcadenas comunes se suman.

Ejemplos

Ejemplo #1 Ejemplo de similar_text() invirtiendo los argumentos

Este ejemplo muestra que invertir los argumentos string1 y string2 puede producir resultados diferentes.

<?php
$sim
= similar_text('bafoobar', 'barfoo', $perc);
echo
"similaridad: $sim ($perc %)\n";
$sim = similar_text('barfoo', 'bafoobar', $perc);
echo
"similaridad: $sim ($perc %)\n";

El resultado del ejemplo sería algo similar a:

similaridad: 5 (71.428571428571 %)
similaridad: 3 (42.857142857143 %)

Ver también