Foros del Web » Programando para Internet » PHP »

eregi_replace y "presentacion"

Estas en el tema de eregi_replace y "presentacion" en el foro de PHP en Foros del Web. Hola que tal, hace un tiempito que vengo mirando el foro via google search mas que nada y ayudandome con las respuestas a problemas que ...
  #1 (permalink)  
Antiguo 12/11/2008, 05:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 1
eregi_replace y "presentacion"

Hola que tal, hace un tiempito que vengo mirando el foro via google search mas que nada y ayudandome con las respuestas a problemas que estube leyendo, mi nombre es tomas y me gustaria que me dieran una mano con unos problemitas que tengo en php mas precisamente con "eregi_replace"

tengo una varible obtenida de un _get

$search = empty($_GET['q'])? die ($emptys) : mysql_escape_string($_GET['q']);

que procesa una consulta en mysql

$name=mysql_result($result,$i,"name");

y un eregi_replace para poner en negrita las coincidencias en la row

echo eregi_replace( "$search", "<b>$search</b>", $name )."<br>";

ahora bien, me "funciona" pero el problema que cuando busco en mayus; me remplaza el row a mayus

lo que necesitaria seria que de la variable obtenida por el _get sea mayus o no
me lo remplaze por "<b>$search</b> donde el resultado = al row

osea:

si busco por "juan"
y en la fila "nombres" dice "Juan"
me lo remplaze por Juan
no por juan

espero poder haberme hecho entender

gracias y seguramente estare pronto jodiendo un poco mas con alguna otra cosa.
  #2 (permalink)  
Antiguo 12/11/2008, 06:36
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: eregi_replace y "presentacion"

Yo te recomendaría que uses expresiones regulares Perl compatibles (preg_*) en lugar de POSIX (ereg). Más detalles: aquí.

Si te animas al cambio, podrías usar una expresión como ésta, que lo hace exactamente como quieres:

Código PHP:
echo preg_replace"/($search)/i""<b>$1</b>"$name)."<br>"
Te resumo: Las expresiones regulares PCRE empiezan y terminan siempre con '/' y para que no sean case-sensitive se añade al final esa 'i' que ves en el ejemplo. Para la sustitución puedes emplear las referencias. En este caso $1 se refiere al primer bloque entre paréntesis de la regex (aunque sólo hay uno :D). Pero por lo demás... es prácticamente lo mismo.

Un saludo.

Edito: PD/ Bienvenido!

Última edición por Deschamps; 12/11/2008 a las 06:42
  #3 (permalink)  
Antiguo 12/11/2008, 06:48
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: eregi_replace y "presentacion"

Ahí el truco está en usar expresiones regulares....

Echale un ojo a ese tema...

Sería algo del estilo (no aseguro ni que funcione ni que sea lo más óptimo, simplemente es para ver por dónde irían los tiros):

$name = preg_replace("#$search#Usi","<b>$search</b>",$name);

Edito: Parece que se me han adelantado... espero que te sirvan las soluciones.
  #4 (permalink)  
Antiguo 12/11/2008, 07:27
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: eregi_replace y "presentacion"

gracias Deschamps y Keysher por contestar; eh probado ambas, la solucion de keysher no termina siendo lo que necesito, pero en cambio la primera es justamente lo que estaba buscando =D , esta interesante el tema de las expresiones regulares voy a leer un poco al respecto.

thx.

PD1:intente ponerles "karma" pero me parece q puse desaprobar en el tilde. hay alguna forma de volver atras =P?

PD2:intente devuelta y lo corregi calculo q con eso ya esta =P

Última edición por r4ilgun; 12/11/2008 a las 07:33
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 22:00.