Valider le format de date en php
Je suis en train de valider la date à l'aide de PHP.
J'aimerais formats suivants:
d/m/yy
d/m/yyyy
dd/m/yy
dd/m/yyyy
d/mm/yy
d/mm/yyyy
dd/mm/yy
dd/mm/yyyy
J'ai essayé beaucoup d'expressions régulières et les différentes variantes de checkdate() fonction. Actuellement, j'ai quelque chose comme ceci:
function _date_is_valid($str)
{
if(strlen($str) == 0)
return TRUE;
if(substr_count($str,'/') == 2)
{
if (preg_match("/^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2}))/", $str))
{
$datearray = explode('/',$str);
if($datearray[2] > 2030)
return FALSE;
return checkdate($datearray[1], $datearray[0], $datearray[2]);
}
else
{
return FALSE;
}
}
return FALSE;
}
Cependant, cela valide les dates comme 11/11/200 et 11/11/200#
Comment puis-je valider la date pour correspondre format requis?
Edit: j'ai pu vérifier datearray[2] entre 10 et 30 et 2010 et 2030. Mais est-il un moyen de le vérifier à l'aide de regex?
Edit1: retourne TRUE en cas de strlen($str) == 0 est parce que je veux que les utilisateurs puissent ajouter des événements, sans savoir quand aura lieu l'événement de se produire, de sorte que quelqu'un d'autre peut qualifier la planification et de l'événement d'affectation de certaines dates plus tard
Juste pour le record. J'ai fini par faire:
function _date_is_valid($str)
{
if(strlen($str) == 0) //To accept entries without a date
return TRUE;
if(substr_count($str,'/') == 2)
{
list($d,$m,$y) = explode('/',$str);
if(($y >= 10 && $y <= 30) || ($y >= 2010 && $y <= 2030))
{
return checkdate($m,$d,$y);
}
}
return FALSE;
}
Merci à tous pour vos réponses
source d'informationauteur LukeP
Vous devez vous connecter pour publier un commentaire.
Si elle sera toujours la date /mois /année, vous pouvez utiliser
checkdate
:un moyen facile de le faire
Essayez ceci:
J'ai été simplement de changer le martin réponse ci-dessus, ce qui permettra de valider n'importe quel type de date et de retour dans le format que vous souhaitez.
Il suffit de changer le format en édition dessous de la ligne de script strftime("10-10-2012", strtotime($dt));
Ce que j'ai fait pour valider il était simple
Vous pouvez le découvrir avec l'aide de regexp trop
comment sur
if(strtotime($str) !== FALSE) $valid = TRUE;