Foros del Web » Programando para Internet » PHP »

Expresión regular

Estas en el tema de Expresión regular en el foro de PHP en Foros del Web. Hola, Tengo muchas cadenas con teléfonos y quiero limpiar los números de paréntesis y del prefijo internacional +56 Estoy intentándolo hacer paso a paso, si ...
  #1 (permalink)  
Antiguo 09/03/2012, 15:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 52
Antigüedad: 14 años, 2 meses
Puntos: 3
Información Expresión regular

Hola,
Tengo muchas cadenas con teléfonos y quiero limpiar los números de paréntesis y del prefijo internacional +56

Estoy intentándolo hacer paso a paso, si lo hago así me sustituye el primer paréntesis bien
$sustituye="";
$busca="(";
$value="56 (2) 2010719"
$no_parentesis=str_replace($busca, $sustituye, $value);

pero me gustaría añadir el otro paréntesis dentro de busca y no sé como hacerlo. He probado "[(|)]" y no me funciona, tampoco "(,)"
Estoy empezando con las regex como podéis comporbar, gracias
  #2 (permalink)  
Antiguo 09/03/2012, 15:51
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Expresión regular

regex? Mejor PCRE
Aqui una guia sencilla.
Saludos,
  #3 (permalink)  
Antiguo 09/03/2012, 15:53
 
Fecha de Ingreso: septiembre-2010
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Expresión regular

$sustituye="";
$busca="(";
$busca2=")";
$value="56 (2) 2010719"
$no_parentesis=str_replace($busca, $sustituye, $value);
$value = $no_parentesis;
$no_parentesis = str_replace($busca2, $sustituye, $value);
  #4 (permalink)  
Antiguo 09/03/2012, 16:02
 
Fecha de Ingreso: febrero-2010
Mensajes: 52
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Expresión regular

Mondain,
Justamente lo estaba haciendo así
$busca="(";
//$busca="+56";
$sustituye="";
//parentesis () por
//$busca='#\(([\w\s]+)\)#i';
$no_parentesis=str_replace($busca, $sustituye, $value);
$busca=")";
$no_parentesis=str_replace($busca, $sustituye, $no_parentesis);
$busca="+56";
$no_parentesis=str_replace($busca, $sustituye, $no_parentesis);

Pero me gustaría saber si había una manera de añadir los dos paréntesis dentro de la misma variable $busca, para solo llamar una vez a str_replace. Creo que no queda muy elegante

Óscar, no se llaman regular expresion?
Ya estaba consultando justamente ese mismo manual
  #5 (permalink)  
Antiguo 09/03/2012, 16:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Expresión regular

<?php

$value="56 (2) 2010719"

$patrones = array();
$patrones[0] = '/(/';
$patrones[1] = '/)/';

$sustituir = array();
$sustituir[0] = '';
$sustituir[1] = '';

echo preg_replace($patrones, $sustituir, $value);

?>
  #6 (permalink)  
Antiguo 09/03/2012, 16:56
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresión regular

Para usar expresiones regulares necesitas usar las funciones preg_* no te sirve str_replace, en su lugar usa preg_replace.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 12/03/2012, 07:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 52
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Expresión regular

Muchas gracias por las respuestas.

Pero si pruebo lo que me ha escrito Mondain, no me funciona y si lo simplifico más y pongo:
$value= '+56 435 343( )2323";
$patrones = '5';

$sustituir='a';

echo $patrones;
echo $sustituir;
echo $value;
echo preg_replace($patrones ,$sustituir, $value);

no me aparece el echo del preg_replace, mientras que los otros tres valores si se me imprimen.

Quizás el preg_replace no se puede utilizar con strings? es un varchar que tomo de la base de datos
  #8 (permalink)  
Antiguo 12/03/2012, 07:51
 
Fecha de Ingreso: febrero-2010
Mensajes: 52
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Expresión regular

Cita:
Iniciado por andresdzphp Ver Mensaje
Para usar expresiones regulares necesitas usar las funciones preg_* no te sirve str_replace, en su lugar usa preg_replace.

Saludos.
No me funcionaba la función preg_replace y si que me responde ereg_replace
las primeras son perl y las segundas son posix, no entiendo muy bien, porque yo pensaba que solo era php
  #9 (permalink)  
Antiguo 12/03/2012, 17:31
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresión regular

Cita:
Iniciado por Bernardao Ver Mensaje
No me funcionaba la función preg_replace y si que me responde ereg_replace
las primeras son perl y las segundas son posix, no entiendo muy bien, porque yo pensaba que solo era php
Puedes decir porque no te funciona, cuál es el error?

La función ereg_replace es obsoleta.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 12/03/2012, 18:23
 
Fecha de Ingreso: febrero-2010
Mensajes: 52
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Expresión regular

Cita:
Iniciado por andresdzphp Ver Mensaje
Puedes decir porque no te funciona, cuál es el error?

La función ereg_replace es obsoleta.

Saludos.
No vi ningún error, simplemente no me filtraba los resultados en el navegador. Seguramente me equivoqué con el código.

Lo necesitaba para una migración y me funcionó con ereg_replace.
Para la próxima vez estaré al tanto, muchas gracias.

Etiquetas: regular
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:27.