IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recherche une regex valide


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 95
    Points : 46
    Points
    46
    Par défaut Recherche une regex valide
    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 !

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    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'));

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    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 :
    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;
    }
    Probablement à améliorer ...

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    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.

Discussions similaires

  1. Recherche d'une regex
    Par rambc dans le forum Général Python
    Réponses: 18
    Dernier message: 22/07/2010, 11h47
  2. Recherche d'une regex toute simple (mais pas pour moi)
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 15/04/2009, 16h23
  3. Tester si une variable contient une regex valide
    Par iblis dans le forum Langage
    Réponses: 6
    Dernier message: 10/08/2007, 01h04
  4. [RegEx] Valider une date
    Par m_biaggi dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/02/2007, 12h30
  5. Réponses: 5
    Dernier message: 10/07/2006, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo