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 :

encore un preg_match [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut encore un preg_match
    Bon ben j'ai essayé de m'inspirer de mon précédent post mais j'ai quand même un problème.
    Je veux controler que la saisie est bien ce format 00h00mn voilà ce que j'ai écris et qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (!preg_match('#^[[:num:]]{2,2}([h])([[:num:]]{2,2}([mn])$#', $duree)); 
    	{ 
    		echo "durée invalide";
    	}
    	else {
    		echo "durée valide";
    	}
    }
    Si on peut me dire où est mon erreur.

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (preg_match('/^[0-9]{2}[h][0-9]{2}[m]/', $duree)) echo 'durée valide';
    else echo 'durée invalide';

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bon ben merci, ça marche et ma page est ok

  4. #4
    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 778
    Points
    17 778
    Par défaut
    La classe [:num:] n'existe pas, en revanche il existe :
    • [:alnum:] qui équivaut à [0-9a-zA-Z] avec suivant la configuration de vos locales, les caractères spéciaux/accentués, ce qui doit correspondre à l'ensemble \w
    • [:digit:] qui équivaut à [0-9] que l'on peut abréger en \d

    Utiliser une classe pour un seul caractère qui n'est pas un métacaractère n'est pas justifiée.

    Les occurrences minimales et maximales, lorsqu'elles sont égales peuvent être compactées en exactement : {2,2} devient {2}. Attention à l'utilisation des classes : [mn] signifie bien le caractère m ou n, il ne s'agit pas d'une séquence (mn).

    Pour raccourcir tout ça (j'ai rajouté les options d'insensibilité à la casse et de tenir compte d'un éventuel saut de ligne à la fin) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!preg_match('#^\d{2}h\d{2}mn?$#Di', $duree))
    J'en profite pour rappeler qu'un tutoriel couvre tous les aspects de l'extension PCRE (fonctions preg_*) : Initiation aux expressions régulières en PHP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. choix sgbdr (encore!)
    Par _Gabriel_ dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 23/03/2004, 10h39
  3. TEdit (encore)
    Par dj.motte dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/12/2002, 19h02
  4. TPalette (encore)
    Par Flipper dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2002, 23h45

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