Ver Mensaje Individual
  #10 (permalink)  
Antiguo 27/11/2002, 14:29
Avatar de chubu
chubu
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 22 años, 3 meses
Puntos: 0
dj,

revise la funcion y era una pavada, no tuve en cuenta que si alguna de las palabras aparece en el primer espacio (offset 0), no iba a entrar al while nunca, asi que cambie la condicion del while, la funcion queda asi:

Código PHP:
  function resaltar_palabras($texto$palabras)
  {
   
// en $texto viene el texto original
   // en $palabras viene el "criterio de busqueda"

   // pasamos todo a mayusculas, pero en variables auxiliares
   
$textoM strtoupper($texto);
   
$palabrasM strtoupper($palabras);

   
// voy a trabajar sobre esta otra variable
   
$textoS $texto;

   
// armo un array con las palabras
   
$lista_palabras explode(" ",$palabrasM);

   
// recorro el array de palabras
   
foreach($lista_palabras as $palabra)
   {
    
// ahora reocrro el texto
    
while(!(($pos strpos($textoM$palabra)) === false))
    {
     
$len strlen($palabra);

     
// reemplazo en ambos strings, para mantener una relacion de tamaño en ambos
     
$textoS substr($textoS0$pos)."<font color='#ff0000'>".substr($textoS$pos$len)."</font>".substr($textoS, ($pos+$len));
     
// en el estring auxiliar reemplazamos por blancos, para no entrar en un loop infernal
     
$textoM substr($textoM0$pos)."<font color='#ff0000'>".str_pad(" "$len" ")."</font>".substr($textoM, ($pos+$len));
    }
   }
   
   return 
$textoS;
  } 
habria que ver el tema de que si buscas "aguja" matchee "agúja", y casos similares de acentos y enies, pero como te dije antes, con hacer un par de str_replace en $palabrasM y en $textoM, antes de hacer el explode se tendria que solucionar el asunto.

saludos,

chubu
__________________
:pensando:hay algo mal que no anda bien