Foros del Web » Programando para Internet » PHP »

Como crear un pattern para preg_match()

Estas en el tema de Como crear un pattern para preg_match() en el foro de PHP en Foros del Web. Saludos amigos, Estoy trabajando en una página web y tengo dos dudas a ver si alguien me puede ayudar: 1.- Necesito crear un pattern para ...
  #1 (permalink)  
Antiguo 03/09/2009, 16:01
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 4 meses
Puntos: 0
Como crear un pattern para preg_match()

Saludos amigos,

Estoy trabajando en una página web y tengo dos dudas a ver si alguien me puede ayudar:
1.- Necesito crear un pattern para preg_match... la cadena se recibe en este formato: [\"5\",\"61\",\"3\"] y yo la necesito de esta manera: 5,61,3
2.- Existe alguna herramienta o un sitio que te ayude a crear los patterns??? ...es que la página que estoy trabajando usa muchas cadenas codificadas que debo transformar a patrones pre-establecidos por el cliente.

Saludos y gracias,
Silver
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #2 (permalink)  
Antiguo 03/09/2009, 16:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como crear un pattern para preg_match()

Me perdi. Si es posible podrias explicar de otra forma lo que quieres hacer y si tambien es posible escribir lo que hayas hecho o algun ejemplo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 03/09/2009, 17:04
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Como crear un pattern para preg_match()

Hola abimaelrc,

Necesito un pattern que convierta una cadena en otra, solo eso...

Por ejemplo:
preg_match("(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}", $fecha);
Convierte una $fecha al formato "dd/mm/aaaa"

En mi caso necesito convertir cadenas que me llegan con este formato: [\"5\",\"61\",\"3\"], al siguiente formato: 5,61,3

De hecho, esto es algo que ya resolví, pero de una manera muy rústica con el siguiente código, pero necesito hacerlo vía un "pattern" para que sea más elegante.

Código PHP:
...
$temp_str stripslashes($cadena_a_convertir]);
$temp_str str_replace('"'''str_replace('['''str_replace(']'''$temp_str)));
... 
Y la segunda pregunta era si existe algun sitio web en el que de menera automatizada se creen los patterns... o en su defecto un link con una buena explicación para ponerme a hacerlos yo... jajaja

Saludos!!!!
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #4 (permalink)  
Antiguo 03/09/2009, 18:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como crear un pattern para preg_match()

Podrias hacerlo de esta forma.

Código PHP:
Ver original
  1. <?php
  2. $s = "[\"5\",\"61\",\"3\"]";
  3. preg_match_all("/[\d,]/",$s,$m);
  4. $t = implode("",$m[0]);
  5. echo $t;
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 03/09/2009, 19:31
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Como crear un pattern para preg_match()

Cita:
De hecho, esto es algo que ya resolví, pero de una manera muy rústica con el siguiente código, pero necesito hacerlo vía un "pattern" para que sea más elegante.
La simpleza es elegancia. En el manual dice claramente que deber evitarse usar el motor de expresiones regulares si se puede sino estar tirando eficiencia por un capricho.
  #6 (permalink)  
Antiguo 03/09/2009, 20:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como crear un pattern para preg_match()

@bigwhite, estoy de acuerdo que muchos han indicado que mientras se pueda evitar el uso de expresiones regulares mucho mejor para que haya mejor rendimiento. Pero no he visto en el manual que diga eso. Si es posible me podrias indicar donde dice eso en el manual.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 03/09/2009, 20:45
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Como crear un pattern para preg_match()

Cita:
Iniciado por abimaelrc Ver Mensaje
@bigwhite, estoy de acuerdo que muchos han indicado que mientras se pueda evitar el uso de expresiones regulares mucho mejor para que haya mejor rendimiento. Pero no he visto en el manual que diga eso. Si es posible me podrias indicar donde dice eso en el manual.
Por todos lados! ejemplo -> http://www.php.net/split

Cita:
preg_split(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to split(). If you don't require the power of regular expressions, it is faster to use explode(), which doesn't incur the overhead of the regular expression engine.
Claramente dice "If you don't require the power of regular expressions, it is faster to use ...., which doesn't incur the overhead of the regular expression engine"
  #8 (permalink)  
Antiguo 04/09/2009, 00:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como crear un pattern para preg_match()

Iiiiichhh buena, me había fijado mas bien en que dice deprecated pero no había visto que dijera esa parte. Muchas gracias
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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:12.