pb vérification format date par expression régulière
Posté : 20 déc. 2010, 12:57
par Anémone
Bonjour,
Un petit problème de vérification php de saisie de format de date:
if(preg_match("^[0-3][0-9]\/[0-1][0-9]\/[0-9]{4}$", "10/12/2004")){echo "date conforme";}
else echo "date non conforme";
J'ai toujours
et je ne comprends pas pourquoi.
Une lumière...?
Merci d'avance,
cordialement,
Thierry
PS: Évidemment ce serait bien de faire un contrôle de saisie préalable avec javascript, mais je ne sais pas faire. Heu, si... quelqu'un...
Re: pb vérification format date par expression régulière
Posté : 20 déc. 2010, 14:41
par crash
Bonjour,
Tu as oublier les /
Essai ceci:
if(preg_match("/^[0-3][0-9]\/[0-1][0-9]\/[0-9]{4}$/", "10/12/2004")){echo "date conforme";}
else echo "date non conforme";
Re: pb vérification format date par expression régulière
Posté : 20 déc. 2010, 14:42
par moogli
salut,
en abusant du transtypage de php et utilisant ta regexp qui est bon dans le sens ou tu l'entend je ferais ceci :
<?php
if ( !empty($_POST['date'])) {
if (preg_match ('`^[0-3][0-9]\/[0-1][0-9]\/[0-9]{4}$`i',$_POST['date'])) {
echo $_POST['date'] . ' la date est bonne !<br />';
$date = explode('/',$_POST['date']);
if ( 0 < $date[0] && $date[0] <32) {
if (0< $date[1] && $date[1] <13) {
echo 'tout est ok<br />';
}
else {
echo 'mois pas bon<br />';
}
}
else {
echo 'jour pas bon<br />';
}
}
else {
echo 'pas bon : <br />';
var_dump($_POST['date']);
}
}
?>
<html>
<head></head>
<body>
<form action="" method="post">
<label for="date">La date ?</label><input id="date" name="date" />
<br />
<input type="submit" value="tester" />
</form></body>
</html>
a voir mais il y a surement une autre solution avec les fonctions de date
@+
Re: pb vérification format date par expression régulière
Posté : 20 déc. 2010, 17:35
par Anémone
Merci!
Effectivement, avec les slashes ça marche.
Avec le script de moogli, le contrôle est plus poussé.
Mais avant de le mettre en place, je vais aller vérifier comment le serveur traite les saisies non conformes. Je gage qu'il transforme un 34/16/12 en 31/12/12, et en ce cas le contrôle le plus simple m'ira bien.
Merci à tous les deux,
Et à bientôt pour une prochaine question...
Thierry