Esta puede funcionar para lo que necesitas...devuelve el % de similitud
Segun yo lo que hace es
1. Limpiar la cadena dejando solamente letras
2. Eliminando los espacios dobles entre las palabras
3. Compara cada palabra del array mas largo en el mas pequeño y va contando las coincidencias.
Código PHP:
function str_compare($str1, $str2) {
$count = 0;
$str1 = ereg_replace("[^a-z]", ' ', strtolower($str1));
while(strstr($str1, ' ')) {
$str1 = str_replace(' ', ' ', $str1);
}
$str1 = explode(' ', $str1);
$str2 = ereg_replace("[^a-z]", ' ', strtolower($str2));
while(strstr($str2, ' ')) {
$str2 = str_replace(' ', ' ', $str2);
}
$str2 = explode(' ', $str2);
if(count($str1)<count($str2)) {
$tmp = $str1;
$str1 = $str2;
$str2 = $tmp;
unset($tmp);
}
for($i=0; $i<count($str1); $i++) {
if(in_array($str1[$i], $str2)) {
$count++;
}
}
return $count/count($str2)*100;
}