Foros del Web » Programando para Internet » PHP »

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de PHP en Foros del Web. Saludos! Tengo un problema al querer buscar dentro de una tabla el campo telefono. En algunos casos éste fue ingresado de varias formas: $telefono=445-6877 $telefono=4456877 ...
  #1 (permalink)  
Antiguo 06/08/2007, 18:01
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Expresiones regulares

Saludos!
Tengo un problema al querer buscar dentro de una tabla el campo telefono.
En algunos casos éste fue ingresado de varias formas:

$telefono=445-6877
$telefono=4456877
$telefono=445 6877
$telefono=(445)6877

lo que deseo es que al ingresar el numero de telefono "4456877" me encuentre el numero si este aparece en cualquiera de las formas ingresadas.

Cómo sería el patron de busqueda: [0-9][^)(-.]
Cómo se representa el espacio en blanco??

$telefono=[0-9][^)(-.]
$select="select * from datos where telefono like" ...

Gracias por su ayuda.
__________________
:adios:
  #2 (permalink)  
Antiguo 06/08/2007, 19:45
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Expresiones regulares

Yo no lo enfocaría con expresiones regulares. Más bien me desharía de los caracteres no numéricos de la expresión de entrada. Si los datos guardados en la BD también pueden tener caracteres no numéricos, entonces también me desharía de ellos.

Suponiendo que un número de teléfono puede estar formado por los caracteres '-', ' ', '(', ')' y cualquier número, entonces formatería el teléfono a buscar así:

$telf = ereg_replace("[-() ]", "", $telf); // Lo mismo que anidar 4 replaces

Si en el campo de la BD también pueden existir estos caracteres, entonces debes hacer lo mismo. Si usas MySQL, creo que no hay un equivalente al ereg_replace, así que tendrás que anidar 4 replaces. Hechas las transformaciones, estarás siempre comparando números "limpios". El inconveniente es que los replaces en la consulta pueden hacerla algo lenta si la tabla es grande.
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:57.