Foros del Web » Programando para Internet » PHP »

Buscar con expresiones regulares

Estas en el tema de Buscar con expresiones regulares en el foro de PHP en Foros del Web. Hola, tengo una caja de búsqueda en la que el usuario puede buscar cosas como por ejemplo "término". Aunque el usuario lo escriba tal cual, ...
  #1 (permalink)  
Antiguo 06/12/2011, 13:52
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Buscar con expresiones regulares

Hola, tengo una caja de búsqueda en la que el usuario puede buscar cosas como por ejemplo "término".

Aunque el usuario lo escriba tal cual, en la búsqueda sobre la base de datos me salen registros como "LOS TÉRMINOS DESCRITOS", "los términos descritos" o "Los Términos descritos".

Es decir que busca independientemente de mayúsculas y minúsculas. Hasta ahí bien.

Lo que quiero es que cada vez que encuentre "términos", "TÉRMINOS", "Términos"... me lo ponga en negrita.

En lugar de ir haciendo sustituciones en cada uno de los tres casos, me haría falta hacerlo de una vez con alguna expresión regular (supongo). Cómo se podría hacer?
  #2 (permalink)  
Antiguo 06/12/2011, 14:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Buscar con expresiones regulares

usa preg_replace() de php. y en los patrones de tus Expresiones el parametro i, para que no haga diferencias entre minúscular mayúsculas


$patron = "/términos/i";

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 06/12/2011, 15:43
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: Buscar con expresiones regulares

Código PHP:
Ver original
  1. $patron = "/$word/i";
  2. $sustitucion = "<b>/$word/i</b>";
  3. $description = preg_replace($patron, $sustitucion, $description);

lo intenté pero no me funcionó ¿?
  #4 (permalink)  
Antiguo 06/12/2011, 16:03
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Buscar con expresiones regulares

Debería ser así:

Código PHP:
Ver original
  1. $patron = "/($word)/i";
  2. $sustitucion = "<b>($1)</b>";
  3. $description = preg_replace($patron, $sustitucion, $description);

Te recomiendo que leas este aporte.

Saludos.
  #5 (permalink)  
Antiguo 06/12/2011, 16:14
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: Buscar con expresiones regulares

Me funcionó pero sin los paréntesis de $1, es decir:

Código PHP:
Ver original
  1. $patron = "/($word)/i";
  2. $sustitucion = "<b>$1</b>";
  3. $description = preg_replace($patron, $sustitucion, $description);

Gracias!!!
  #6 (permalink)  
Antiguo 06/12/2011, 16:20
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Buscar con expresiones regulares

Cita:
Iniciado por humanista Ver Mensaje
Me funcionó pero sin los paréntesis de [B]$1[/B
Uff no se como se metieron esos parentesis . Que bueno que te funciono.

Saludos!
  #7 (permalink)  
Antiguo 06/12/2011, 16:26
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: Buscar con expresiones regulares

Ok, me acabo de dar cuenta de que no va al 100% bien. Cuando le meto algún acento... no va bien. Si en el término de búsqueda hay acentos, sí que distingue entre mayúsculas y minúsculas, es decir Á lo toma sólo como Á, y no como Á o como á.

De la misma forma, á toma como á, y no como á y Á.
  #8 (permalink)  
Antiguo 06/12/2011, 16:34
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Buscar con expresiones regulares

Tienes razón, prueba así:

Código PHP:
Ver original
  1. $patron = "/($word)/iu";

PD: Revisa el enlace al aporte que te pase, esta muy completo.
  #9 (permalink)  
Antiguo 06/12/2011, 16:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Buscar con expresiones regulares

Siempre ¡y cuando estés usando utf-8

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>titulo</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <?php
  10. $cadena = "ella es mi mamá pero no la MamÁ de mi hermano";
  11. $palabra ="mamá";
  12.  
  13. $patron = "/($palabra)/iu";
  14. $sustitucion = "<b>$1</b>";
  15. $salida = preg_replace($patron, $sustitucion, $cadena);
  16. echo "<p>$salida</p>";
  17. ?>
  18. </body>
  19. </html>
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 06/12/2011, 17:28
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: Buscar con expresiones regulares

gracias a los dos, ahora sí que me va PERFECTO!

Etiquetas: expresiones, registro, regulares, usuarios
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 15:40.