Foros del Web » Programando para Internet » PHP »

Problema validar sólo formato fecha

Estas en el tema de Problema validar sólo formato fecha en el foro de PHP en Foros del Web. Hola gente... tengo que migrar a php 7 y tengo problemas con validar el formato fecha que tenía y trabajaba bien. El mismo compueba sólo ...
  #1 (permalink)  
Antiguo 22/07/2020, 14:02
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 5 meses
Puntos: 3
Problema validar sólo formato fecha

Hola gente...

tengo que migrar a php 7 y tengo problemas con validar el formato fecha que tenía y trabajaba bien. El mismo compueba sólo el formato (000-00-00), y no la validación de la fecha ya que puede haber entradas como 0000-00-00, 1890-00-00, ó 1922-10-00.

El dato que recibo por "$_POST['fecha']" lo compruebo de la siguiente manera:

Código PHP:
if (preg_match('/#^(\d{4})-(\d{2})-(\d{2})$#/',($_POST['fecha']))) {
    
    echo 
"el formato es corecto";
    
}else{

    echo 
"Error: el formato es incorrecto";


Se que el formato de la fecha es correcta, por ej. 1946-09-06, y aún así me tirra el error.

He mirado en el manual, y en muchos otros jemplos y no consigo darle solución. Probé con:

Código PHP:
preg_match('/#^([0-9]{4})-([0-9]{2})-([0-9]{2})$#/',($_POST['fecha'])) 
... y también me da Error.

Agradezco ayuda u orientación para resolverlo!!!
  #2 (permalink)  
Antiguo 22/07/2020, 15:31
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Proflema validar solo formato fecha

Solo para estar seguro, el valor que recibes en el post es #2020-10-12# o 2020-10-12 ???


La validación te falla porque tienes un formato incorrecto en la expresión regular, los signos # están de mas, lo que impide que el resto de tu expresión regular se ejecute
  #3 (permalink)  
Antiguo 22/07/2020, 16:38
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 5 meses
Puntos: 3
Respuesta: Problema validar sólo formato fecha

Hola ArturoGallegos, gracias por ayudarme!!!

El post lo recibo como 2020-10-12.

Ahora bien, he probado en sacarle los escapes a la comilla simple ('/.../'):

Código PHP:
preg_match('#^(\d{4})-(\d{2})-(\d{2})$#',($_POST['fecha'])); 
y ahora funciona, pero en realidad el escape tendría que estar... verdad?

Por lo tanto el problema no es el "#", o el # está haciendo de escape?
  #4 (permalink)  
Antiguo 23/07/2020, 16:46
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Problema validar sólo formato fecha

Lo que pasa que esa diagonal no era un escape para la comilla simple en si, hasta donde tengo entendido esa diagonal lo que hace es marcar o delimitar el inicio y final de tu expresión regular.

No sabia que # tuviera el mismo efecto, incluso si miras la documentación de PHP
https://www.php.net/manual/es/function.preg-match.php

Encontraras que utilizan / para marcar el inicio y final de la expresion

Etiquetas: dato, fecha, formato, post
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 05:24.