Foros del Web » Programando para Internet » PHP »

comparar textos

Estas en el tema de comparar textos en el foro de PHP en Foros del Web. buenas, estoy tratando de comparar strings compuestos de varias palabras (masomenos entre 2 a 80). lo estaba haciendo con similar_text, y si bien funciona bastante ...
  #1 (permalink)  
Antiguo 25/05/2010, 01:52
 
Fecha de Ingreso: abril-2005
Ubicación: zürich, la rica suiza
Mensajes: 212
Antigüedad: 19 años, 7 meses
Puntos: 2
comparar textos

buenas, estoy tratando de comparar strings compuestos de varias palabras (masomenos entre 2 a 80).

lo estaba haciendo con similar_text, y si bien funciona bastante bien, igual me deja unas dudas. por ejemplo:

$string1 = "footer y twitter";
$string2 = "twitter y footer";

si comparo estos dos strings con similar_text me da 43% de similaridad apsear de que son iguales pero en diferente orden.

como podria solucionar este problema de forma mas sencilla? a lo mejor con varios filtros?

mil gracias!
  #2 (permalink)  
Antiguo 25/05/2010, 07:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: comparar textos

Verifica la función levenshtein.

Edito:
Verificando la función no creo que te ayude mucho, pero, podrías hacer algo como esto
Código PHP:
Ver original
  1. <?php
  2. function getPercent($str1, $str2){
  3.     $arr = array();
  4.     $percent = 0;
  5.     $n = 0;
  6.     $arr1 = explode(' ',$str1);
  7.     $arr2 = explode(' ',$str2);
  8.    
  9.     $setArray1 = (count($arr1) <= count($arr2) ? $arr2 : $arr1);
  10.     $setArray2 = (count($arr1) <= count($arr2) ? $arr1 : $arr2);
  11.  
  12.     foreach($setArray1 as $v){
  13.         $p = (in_array($v, $setArray2) ? 100 : 0);
  14.         $percent += $p;
  15.         $n++;
  16.     }
  17.     return $percent / $n;
  18. }
  19. echo getPercent('foo y bar', 'bar y foo'); //100
  20. echo getPercent('foo y bar', 'bar y foo candy'); //75
  21. echo getPercent('foo y bar candy', 'bar y foo'); //75
  22. echo getPercent('foo y bar bar foo bar', 'bar y foo'); //100
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 25/05/2010 a las 08:47

Etiquetas: comparar, textos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:05.