Foros del Web » Programando para Internet » PHP »

Expresion regular de dia

Estas en el tema de Expresion regular de dia en el foro de PHP en Foros del Web. Estoy intentando hacer una función que me valide una fecha. La función es la siguiente: Código PHP:      function  filtra_date ( $variable ,  $caracter_separacion ,  ...
  #1 (permalink)  
Antiguo 29/12/2005, 09:06
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
Expresion regular de dia

Estoy intentando hacer una función que me valide una fecha. La función es la siguiente:

Código PHP:
    function filtra_date($variable$caracter_separacion$retorno '' )
    {
        
$patronDia "(0?[1-9]|[1-2][0-9]|3[0-1])";
        
$patronMes "(0?[1-9]|1[0-2])";
        
$patronAnyo "[0-9]{4}";
        
        
$patron "/".$patronDia.$caracter_separacion.$patronMes.$caracter_separacion.$patronAnyo."/";
        
        if( 
preg_match($patron$variable) == TRUE )
        {
            
$resultado $variable;
        }
        else
        {
            
$resultado $retorno;
        }
        
        return 
$resultado;
    } 
El caso es que si $variable = "071-12-2005" me la acepta como válida.
Con la función ereg he conseguido que me funcione pero me gustaría saber por qué no me funciona con la función preg_match. Gracias.
  #2 (permalink)  
Antiguo 29/12/2005, 09:12
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
No entiendo por que usar eso si tenes checkdate nativa de php.
http://ar.php.net/manual/en/function.checkdate.php
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 29/12/2005, 09:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando tengas lista tu función (no te puedo ayudar en expresiones regulares .. no es mi fuerte) .. usa la función checkdate() para verificar si la fecha es de calendario, es decir .. que no te pongan un "31 de febrero" por ejemplo .. Dicha función atiende al "calendario" así que valida una fecha si es real o no.

http://www.php.net/checkdate
(por cierto . .en los comentarios de los usaurios de esta función tienes algunas expresiones regulares para validar cierto formato ...)

Un saludo,
  #4 (permalink)  
Antiguo 29/12/2005, 09:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por nicolaspar
No entiendo por que usar eso si tenes checkdate nativa de php.
http://ar.php.net/manual/en/function.checkdate.php
Podría ser que quisieras aceptar vários formatos de fecha .. con un separador como - o / .. o con el año al principio .. en fin .. con una expresión regular por lo menos validarías si el formato es de los que aceptas .. De todas formas hay que usar checkdate() para validar una vez "desglosado" la fecha si es válida de "calendario".

Un saludo,
  #5 (permalink)  
Antiguo 29/12/2005, 09:40
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Claro, pero suelo forzar mas los datos de entrada cuando son tan estrictos (por ejemplo, poniendo un campo para cada dato día/mes/año), de esta manera se le pasa limpiamente a ckeckdate sin tener problema alguno.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
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 13:01.