Foros del Web » Programación para mayores de 30 ;) » RegExp »

Consulta sobre expresiones regulares REGEXP

Estas en el tema de Consulta sobre expresiones regulares REGEXP en el foro de RegExp en Foros del Web. Hola, tengo un campo en la base de datos donde guardo el nombre completo de los usuarios, nombre y apellido y quiero que me encuentre ...
  #1 (permalink)  
Antiguo 10/11/2011, 14:38
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 18 años, 6 meses
Puntos: 0
Consulta sobre expresiones regulares REGEXP

Hola, tengo un campo en la base de datos donde guardo el nombre completo de los usuarios, nombre y apellido y quiero que me encuentre el usuario ya sea por nombre o apellido, estoy usando

Código:
"SELECT * FROM usuarios WHERE nombre_completo REGEXP '[[:<:]]$param'"
pero solo lo encuentra si lo escribo con la primera letra en mayusculas si esta escrita asi, como puedo hacer para que lo muestre aunque no este escrito en minuscula?

Voy a explicarlo mejor, si tengo guardado Jose Pelota, y pongo "jose", no lo encuentra, si pongo "Jo" si lo encuentra, yo lo que quiero es que lo busque en todas las palabras, ya que al principio lo tenia con ^$param pero solo mostraba por el nombre, o sea jose, y quiero que busque tambien por el apellido sin importar si esta en mayusculas o minusculas.

Saludos
  #2 (permalink)  
Antiguo 11/11/2011, 05:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 14 años, 8 meses
Puntos: 574
Respuesta: Consulta sobre expresiones regulares REGEXP

$param=strtoupper ($param);

"SELECT * FROM usuarios WHERE UPPER(nombre_completo) REGEXP '[[:<:]]$param'"

Igual no es la solucion que buscabas pero esto te puede funcionar....

Primero paso a mayusculas la variable php.

Segundo hago la comparacion del campo rodeando lo con la funcion UPPER de manera que comparo el string pasado a mayusculas... sin modificar lo que contenga el campo.

Como la comparación se hace entre mayusculas y mayusculas no importa como se haya entrado el dato o como se consulte....

Edito: aún seria mas fino esto, si estas seguro que en la bbdd tienes los nombres bien escritos (es decir con mayuscula en la primera letra de cada palabra, cuydado con las particulas tipo "José De La Torre" o José de la Torre)

$param=ucwords(strtolower($param));

SELECT * FROM usuarios WHERE nombre_completo REGEXP '[[:<:]]$param'

ucwords Devuelve una cadena con la primera letra de cada palabra str convertida a mayúsculas, si el caracter es alfanumérico.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/11/2011 a las 05:35
  #3 (permalink)  
Antiguo 11/11/2011, 06:18
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Consulta sobre expresiones regulares REGEXP

Hola, gracias voy a probarlo, si tengo bien escritos los nombres, pero estaba pensando talvez pasarlos por alguna funcion para que agregue la primera letra en mayuscula por si hay algun error al escribirlo cuando se agrega el nombre, pero ya me hiciste pensar con el ejemplo "José De La Torre" si la paso por una funcion lo dejaria asi, umm.

Bueno voy a probarlo, gracias

Etiquetas: expresiones, regulares, select
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 16:36.