elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Expresion Regular] Para leer hora y minutos delimitada con ":" ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Expresion Regular] Para leer hora y minutos delimitada con ":" ?  (Leído 5,150 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[Expresion Regular] Para leer hora y minutos delimitada con ":" ?
« en: 26 Septiembre 2012, 04:20 am »

Buenas...

Quiero construir una expresión regular para leer esto: 10:30, que sera una expresión de tiempo (hora:minutos). Asumiendo que pueden existir dos variantes:

Forma 1-> 10:40
Forma 2-> 8:10

En la Forma 1 son dos valores antes del delimitado ":" y dos valores después.
En la Forma 2 es un solo valor antes del delimitado ":" y dos valores después.

Me hice un codigo pero no logro dar con el correcto para mi programa:

Código
  1. <?php
  2. $hora1= '10:20'; # hora correcta
  3. $hora2= '8:30'; # hora correcta
  4. $hora3= '150:20'; # hora incorrecta
  5. $hora4= 'ab:20'; # hora incorrecta
  6.  
  7. $patron= '/[0-9]{2}\:[0-9]{2}/is';
  8. preg_match( $patron, $hora1, $r);
  9.  
  10. print_r($r);
  11. ?>

El resultado que me da es:
Código:
 Array ( [0] => 10:20 )

Se supone deberia crear un array con los dos valores encontrados y analizados, pero no sucede...

Cual seria la forma correcta ?


En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Expresion Regular] Para leer hora y minutos delimitada con ":" ?
« Respuesta #1 en: 26 Septiembre 2012, 04:42 am »

Ya di con la solucion....

Código
  1. <?php
  2. $hora1= '10:20'; # hora correcta
  3. $hora2= '8:30'; # hora correcta
  4. $hora3= '150:20'; # hora incorrecta
  5. $hora4= 'ab:20'; # hora incorrecta
  6.  
  7. $patron= '/([0-9]{1,})\:([0-9]{1,})/is';
  8. preg_match_all( $patron, $hora1, $r);
  9.  
  10. print_r($r);
  11. ?>

Resultado:
Código:
Array (
  [0] => Array( [0] => 10:20 )
  [1] => Array( [0] => 10 )
  [2] => Array( [0] => 20 )
)

Me queda solo una duda... en mi expresion regular ($patron), uso el valor is, pero he notado que otro usan m o que usan |..expresion..|, en vez de /..expresion../.

Que difiere eso ?, proque si lo aplico en el codigo, sigue haciendo lo mismo :S

Saludos !


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: [Expresion Regular] Para leer hora y minutos delimitada con ":" ?
« Respuesta #2 en: 26 Septiembre 2012, 08:20 am »

El modificador m, se utiliza normalmente en conjunto con ^ o $, o los dos a la vez. Si te fijas, cuando utilizas ^ o $, en el patron este afecta al inicio del texto o al final del texto pero nada mas hay. Pero si deseas que ^ y $, funcionen en cada nueva linea entonce utilizas el modificador m-

Ejemplo:
Código
  1. preg_match_all('/^(h\w+)/im', 'hola mundo xD hPO xdd aaad hXP ', $result);

Salida:
Código:
Array
(
    [0] => Array
        (
            [0] => hola
            [1] => hPO
            [2] => hXP
        )

    [1] => Array
        (
            [0] => hola
            [1] => hPO
            [2] => hXP
        )

)

Ahora sin el modificador m

Código
  1. preg_match_all('/^(h\w+)/i', 'hola mundo xD hPO xdd aaad hXP ', $result);
Código:
Array
(
    [0] => Array
        (
            [0] => hola
        )

    [1] => Array
        (
            [0] => hola
        )

)


Lo de "|..expresion..|", son simplemente delimitadores, normalmente se utilizan # y demas delimitadores para no tener que escapar las barras. Yo en lo personal recomiendo utilizar el delimitador //.

Delimitadores

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines