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 reguliere et eregi [Fait]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut expression reguliere et eregi
    Bonjour

    voila je me suis mis aux expression réguliere j'ai reussis a en faire une pour les chaines de mail en prenant a droite a gauche et croyait avoir compris mais c'est apparement pas le cas puisque j'ai voulu en faire une pour une chaine de caractère et ca fonctionne plus :-)

    Voila mon probleme je voudrais verifier qu'une chaine soit bien composées de letre min maj de chiffre et de certains caractère

    voila mon code qui ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eregi("[[:alnum:][éà-_\/@]]+",$chaine);
    Quand je teste une chaine avec ; ou , ca passe alors que ca devrait pas passer.

    Quel est le probleme avec ma ligne svp avec quelques petites explication.

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, il me semble que ceci devrait marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('#^[[:alnum:]@\-_\\/]+$#', $chaine);
    Petites explications :
    • il est préférable d'utiliser preg_match utilise la syntaxe des expressions rationnelles compatibles PERL (ceci est conseillé dans la doc de PHP.net)
    • les # servent à délimiter le motif de ton expression régulière (tu peux en choisir d'autres)
    • entre les crochets tu as :
      1. [:alnum:] tous les caractères alphanumériques
      2. @ (pas de remarque)
      3. \- il faut échapper le - car c'est un caractère "réservé" pour les regex, d'où le \
      4. _ (pas de remarque)
      5. \\ désigne le \ qu'il faut échapper avec un autre \ (comme pour -)
      6. / (pas de remarque)

    Ta regex ne désignait pas qu'il fallait prendre en compte toute la chaîne de caractères, c'est pourquoi tu avais des problèmes avec les ,;...
    ^ permet de désigner le début de la chaîne et $ la fin

    Voilà, j'espère que je ne t'ai pas embrouillé

    PS : tu peux jeter un oeil sur ce tuto très bien fait : http://cyberzoide.developpez.com/php4/regex/
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Merci pour les explications en fait mon probleme venait du $ a la fin j'ai reussis a en construire maintenant des correctes.

    Pour tes remarques elles sont pas mal surtout pour les echappements ca m'a pas mal aidé. Pour les # j'ai aps tout saisie et pour le preg_match je vais aller voir la doc pour voir ce que ca dit.

    merci

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Les # ce sont des délimiteurs tout comme / et ils sont obligatoire dans la définition de l'expression régulière (surtout avec preg_match, preg_match_all et autres, voir doc).

    Si tu veux en savoir plus : syntaxe des masques

    Sinon je suppose que c'est résolu ?

Discussions similaires

  1. [langage] [Expression][Régulière] motif
    Par Cyspak dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2003, 14h24
  2. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45
  3. Réponses: 2
    Dernier message: 16/06/2003, 15h15
  4. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06
  5. [langage] expression reguliere motif répétitif dans 1 pattern
    Par comme de bien entendu dans le forum Langage
    Réponses: 11
    Dernier message: 09/04/2003, 16h14

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