Foros del Web » Programando para Internet » PHP »

subrayar condicdencias

Estas en el tema de subrayar condicdencias en el foro de PHP en Foros del Web. hola! me baje una funcion function highlight($text, $word){ $word = preg_quote($word); $text = preg_replace("/\b($word)\b/i", '<span class="highlight">\1</span>', $text); return $text; } que se usa asi echo ...
  #1 (permalink)  
Antiguo 19/06/2009, 12:18
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
subrayar condicdencias

hola!
me baje una funcion

function highlight($text, $word){
$word = preg_quote($word);
$text = preg_replace("/\b($word)\b/i", '<span class="highlight">\1</span>', $text);
return $text;
}

que se usa asi

echo highlight('tres tristes tigres',tigres)
y el resultado es algo asi

tres tristes tigres

osea remarca lo que encuentra

pero solo funciona si el texto ignresado es 'tres tristes tigres'

pero que pasa si pongo 'trestristestigres'

tambien deberia remarcarmelo pero no lo hace
puedo adaptar esa funcion para que funcione aunque el texto no este separado?
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 19/06/2009, 12:38
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: subrayar condicdencias

Cambia la expresion regular de \b($word)\b a simplemente $word, aunque tambien podrias usar str_ireplace().
  #3 (permalink)  
Antiguo 19/06/2009, 12:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: subrayar condicdencias

si, en ese caso seria mejor reemplazar con str_replace() y similares...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 19/06/2009, 12:47
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: subrayar condicdencias

perdon.. no entendi str_ireplace o str_replace?
__________________
On error no hago nada porque deje de fumar...
  #5 (permalink)  
Antiguo 19/06/2009, 12:57
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: subrayar condicdencias

str_ireplace() es insensible a mayusculas y minusculas, si tu deseas que la palabra a subrayar lo sea, entonces usa esta, pero si quieres que la palabra a subrayar sea exactamente igual (en cuanto a mayusculas) entonces usa str_replace()
  #6 (permalink)  
Antiguo 19/06/2009, 13:06
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: subrayar condicdencias

pero el problema no eran las mayusculas sino los espacios

palabra = 'tres tristes tigres'; // funciona
palabra = 'trestristestigres'; // no funciona
__________________
On error no hago nada porque deje de fumar...
  #7 (permalink)  
Antiguo 19/06/2009, 13:10
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: subrayar condicdencias

Solo te dije la diferencia entre una y la otra, no te dije que no iba a funcionar para tu caso, ¿acaso intentaste?

Código php:
Ver original
  1. function highlight_text($text, $word) {
  2.   $text = str_ireplace($word, "<span class=\"highlight\">$word</span>", $text);
  3.   return $text;
  4. }
  #8 (permalink)  
Antiguo 19/06/2009, 17:25
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: subrayar condicdencias

no, no perdon, pense que no entendias cual era el problema
probé el codigo y funciona perfecto, muy amable!
__________________
On error no hago nada porque deje de fumar...
  #9 (permalink)  
Antiguo 28/06/2009, 21:00
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: subrayar condicdencias

me surge otra pregunta relacionada a esto
si bien la funcion funciona al a perfeccion me gustaria mejorar un poquito algo

$cadena = 'mi nombre es diego'
$palabra = 'DIEGO' // esta es la palabra que se buscara en la cadena y se subrayara

la encuentra pero me deja algo asi
mi nombre es DIEGO

pero deberia dejarmela
mi nombre es diego

cuestion que me lo reemplaza y como se puede ver lo pasa a mayusculas
__________________
On error no hago nada porque deje de fumar...
  #10 (permalink)  
Antiguo 28/06/2009, 21:35
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: subrayar condicdencias

Pues llevala a minuscula
strtolower("DIEGO");
  #11 (permalink)  
Antiguo 29/06/2009, 11:28
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: subrayar condicdencias

pero si originalmente la cadena estaba en mayuscula
me la llevaria a minisculas...
la idea es que la deje como esta solo que la subraye
__________________
On error no hago nada porque deje de fumar...
  #12 (permalink)  
Antiguo 29/06/2009, 11:42
 
Fecha de Ingreso: diciembre-2008
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: subrayar condicdencias

lo mejor usa la funcion insensible a mayusculas y minusculas str_ireplace(), ya que con strtolower() o strtoupper(), puedes tener problemas añadidos con la codificacion
  #13 (permalink)  
Antiguo 29/06/2009, 13:18
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: subrayar condicdencias

ya esta en str_ireplace pero
REEMPLAZA POR LA MAYUSCULA EN ESE EJEMPLO
__________________
On error no hago nada porque deje de fumar...
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:46.