Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/04/2007, 21:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Expresion regular para fechas

No es necesario que hagas cosas como [X], basta poner simplemente X:
[0][1-9]|[1-2][0-9]|[3][0-1])-([0][1-9]|[1][0-2])-([2][0][0][7-9]

puede escribirse como

(0[1-9]|[1-2][0-9]|3[0-1])-(0[1-9]|1[0-2])-(200[7-9])

Se me ocurre que una forma rápida puede ser:
1.- usar mktime para convertir la fecha que te pasan a una marca de tiempo, con hora 0, sea este valor $tiempo
2.- dividir cada parte de la cadena de fecha que te pasaron, supongamos $dia, $mes y $anio

si $dia.'-'.$mes.'-'.$anio != date("d-m-Y", $tiempo)

entonces han introducido una fecha no válida. ¿Por qué? Porque mktime acepta cosas como 32/1/2007, pero las convierte (en este caso) a 1/2/2007. Ergo, si la fecha está mal, te la va a convertir a otra fecha.

Saludos.