Bonjour je souhaiterai savoir quelle est la regex a utiliser pour verifier le format d'une date comme celle la :
jour-mois-an heure:minute:second
JJ:MM:AA HH:MM:SS
31-12-06 23:52:05
Voila merci beacoup !
Bonjour je souhaiterai savoir quelle est la regex a utiliser pour verifier le format d'une date comme celle la :
jour-mois-an heure:minute:second
JJ:MM:AA HH:MM:SS
31-12-06 23:52:05
Voila merci beacoup !
Salut,
Avec une simple fonction utilisant checkdate()
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 function verif_date($date) { if( substr_count($date, ' ') == 1 ) { $date = explode(' ', $date); if( substr_count($date[0], '-') == 2 && substr_count($date[1], ':') == 2 ) { list($h, $m, $s) = explode(':', $date[1]); $date = explode('-', $date[0]); if( checkdate($date[1], $date[0], $date[2]) === true ) if( is_numeric($h) && is_numeric($m) && is_numeric($s) && $h >= 0 && $h <= 23 && $m >= 0 && $m <= 59 && $s >=0 && $s <= 59 ) return true; } } return false; } var_dump(verif_date('31-12-06 23:52:05')); var_dump(verif_date('31-12-06 00:52:05')); var_dump(verif_date('31-12-06 24:52:05')); var_dump(verif_date('31-12-06 23:aa:05')); var_dump(verif_date('32-12-06 23:52:05')); var_dump(verif_date('31-02-06 23:52:05')); var_dump(verif_date('31-12-06 23:52:70')); var_dump(verif_date('31-*******06 23:52:05')); var_dump(verif_date('31-12-06 2352:05')); var_dump(verif_date('xxxxxxxxxx'));
J'ai horreur de explode parce que si vous fournissez une chaîne invalide où il viendra à manquer des parties, plusieurs messages d'erreur vous seront affichés (sinon il faut ajouter des vérifications supplémentaires). Personnellement, je préfère donc le faire avec preg_match d'autant plus que l'on peut assouplir un peu le format :
Probablement à améliorer ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function verif_date($date) { if (preg_match('#^([0-9]{2})([/-])([0-9]{2})\2([0-9]{2}|[0-9]{4})\s+([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$#D', $date, $m)) { if (strlen($m[4]) == 2) { $m[4] += 2000; } return checkdate($m[3], $m[1], $m[4]) && $m[5] < 24 && $m[6] < 60 && $m[7] < 60; } return FALSE; }
Le substr_count de la fonction que j'ai mise le vérifiait.
Mais bon, c'est vrai qu'une expression régulière est sans doute mieux.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager