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 :

Expression régulière problème [Fait]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut Expression régulière problème
    salut

    voila jai un petit problème avec mon expression. est-ce que cette syntaxe est correcte ?

    <?php
    if(!ereg('`&#91;&#91;:digit:]]`',$tab&#91;'11'])){
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    'Le numéro de téléphone doit être uniquement composé des chiffres de 1 à 9.';
    &#160;&#160;&#160;&#160;&#160;&#160;}
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  2. #2
    Membre expérimenté

    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
    Par défaut
    Votre expression régulière est fausse, car elle validera toute chaîne comportant au moins un chiffre. De plus, nul besoin de délimiteurs avec la fonction ereg.

    Pour un numéro de téléphone français, je verrais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(!ereg('^0[1-6][[:digit:]]{8}$',$tab['11'])) {
        echo 'Le numéro de téléphone doit être uniquement composé des chiffres de 1 à 9.';
    }

    Julp.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    non pour un numéro suisse il me faut ! mais dis moi juste pourquoi il ne prend pas en compte ? comment dois-je faire ?

  4. #4
    Membre expérimenté

    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
    Par défaut
    Regardez le tutoriel au sujet des expressions régulières. En particulier, les chapitres au sujet des ancres (pour marquer les début et fin ligne - permet de dire que votre chaîne ne doit être composée que de chiffres) et des quantifieurs (nombres d'occurences minimales et maximales).


    Julp.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    et en plus sa ne fonctionne pas... si je met 02647533g23 sa me valide quand meme

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    bon je veux pas me casser la tete pour le moemnt.

    pour l'instant je fais avec la fonction is_numeric()

  7. #7
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Par défaut
    A mon avis, c'est un peu dommage de ne pas insister sur les RegExp : c'est extrêmement utile.

    Comme te l'a dit julp, ton expression valide toute chaîne qui comporte un chiffre, quel que soit le reste de la chaîne.
    Donne-nous un exemple de numéro suisse, si tu veux qu'on t'explique le pourquoi du comment

  8. #8
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match("#^0[0-68]([-. ]?[0-9]{2}){4}$#", $variable)
    Utile pour vérifier un n° de telephone

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    ok alors un numero suisse cest toujour comme sa :

    0xx yyy ww zz

    exemple : 026 456 34 23

    merci

  10. #10
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Par défaut
    Ah, je me suis un peu mal exprimé. Il aurait fallu la construction des numéros de tél.
    Par grave, je vais t'expliquer avec le numéros français (tu ne devrais pas avoir de mal à adapter)

    En France, les numéros de téléphone sont composés de 10 chiffres et commencent par zéro. Le deuxième chiffre est compris entre 1 et 6 (découpage géographique + tél mobiles) ou 8 (numéros dits spéciaux). Les 8 chiffres d'après sont quelconques.

    (je vais utiliser la regexp d'Elwyn)
    On doit donc tester l'intégralité de notre chaîne pour la vérifier. Commençons par le début : ça doit commencer par zéro :
    $reg = "^0";

    Ensuite, on a un chiffre entre 1 et 6, ou 8
    $reg = "^0[1-68]";

    La plupart du temps, on sépare le numéro en couples de chiffres (01 23 45 67 89), mais il arrive qu'on sépare par des points ou des tirets, voire qu'on ne mette aucun séparateur.
    Dans mon exemple , on peut découper simplement en groupes comme ceci :
    01| 23| 45| 67| 89
    On voit qu'à part le début qu'on a déjà traité, le reste est exactement pareil (séparateur ou pas + 2 chiffres)
    - séparateur ou pas séparateur :
    $subReg = "[-. ]?";
    on liste les séparateurs possibles (attention à bien mettre le tiret au début) et on spécifie que ce n'est pas obligatoire avec "?"
    - les 2 chiffres quelconques :
    $subReg = "[-. ]?[0-9]{2}";

    Cette subreg doit être répétée 4 fois :
    $subReg = "([-. ]?[0-9]{2}){4}";

    Notre expression totale devient donc
    $reg = "^0[1-68]([-. ]?[0-9]{2}){4}";
    A partir de là, nous avons terminé la vérification sur l'ensemble de notre numéro, on peut ajouter le dollar pour indiquer une fin de chaîne
    $reg = "^0[1-68]([-. ]?[0-9]{2}){4}$";

    En fonction de ton niveau de connaissances des regexp, ce sera trop détaillé ou pas assez. Dans le dernier cas, n'hésite pas à poser des questions


    J'espère que ça te servira pour tester un numéro suisse. Je ne sais pas à quoi correspond le 26, si c'est un code région ou non.
    Attention aussi à la possibilité pour les numéros de tél d'être au format international ("+33" au début pour la France par ex).

  11. #11
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    non alors tous les num suisse commence par 0. ensuite deux autre chiffre ! cest qui donne 026 par exemple. le 026 est un indicatif par rapport a la région. on a donc 026, 027 etc... ensuite tout temps xxx xx xx

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^0[0-9]{2} [0-9]{3} [0-9]{2} [0-9]{2}$/
    Tu peux avoir des variantes mais c'est ça. Avec un petit peu de recherche à l'aide du tutoriel mentionné ci-dessus, je ne doute pas que tu aies pu trouver par toi-même.

Discussions similaires

  1. problème rs 232
    Par remy059 dans le forum Composants
    Réponses: 4
    Dernier message: 09/08/2006, 13h14
  2. [VB5] probleme rs 232
    Par moi214 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/05/2006, 23h25
  3. [Comm] Changer les Bauds dans une com RS-232
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/01/2006, 11h08
  4. RS 232 envoyer des donnees
    Par psyko_flex dans le forum C
    Réponses: 2
    Dernier message: 22/11/2005, 19h49
  5. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 14h58

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