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 :

un bloc plusieurs fois dans un preg_match [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut un bloc plusieurs fois dans un preg_match
    Bonjour,

    Je cherche a parser une chaine qui commence par un identifiant (nombre), suivi d'un ou plusieurs blocs de lettres separees par des tirets, suivi d'une date (donc 8 chiffres).

    Je galere sur la recuperation des blocs de lettres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $chaine = "1234 - ABC - DE - FGHI 20090110";
     
    $motif = '/^([0-9]+)';
    $motif .= '(?:\s-\s([A-Z]+))+\s([0-9]{8})$/';
     
    print_r($out);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Array
    (
        [0] => 1234 - ABC - DE - FGHI 20090110
        [1] => 1234
        [2] => FGHI
        [3] => 20090110
    )
    je voudrais plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Array
    (
        [0] => 1234 - ABC - DE - FGHI 20090110
        [1] => 1234
        [2] => ABC
        [3] => DE
        [4] => FGHI
        [5] => 20090110
    )
    merci d'avance !

  2. #2
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([0-9]+)\s-\s([a-z]+)\s-\s([a-z]+)\s-\s([a-z]+)\s([0-9]+)$#i
    Voila
    A améliorer suivant le besoin.

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut
    Merci bien, mais est-ce que je peut faire la meme chose, mais avec un nombre indefini de blocs de lettres ?

    genre que tout ces chaines marchent :

    1234 - ABC - DE - FGHI 20090110
    1234 - 20090110
    1234 - AB - CD - DE - FG - HI - 20090110
    1234 - AB - 20090110

  4. #4
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Dans ce cas là je ferai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([0-9]+)\s-\s(.*?)([0-9]+)$#i
    Puis je traiterai ce que j'ai en (2) avec une autre regexp ou un explode. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        * [0]=> array
              o [0]=>1234 - AB - CD - DE - FG - HI - 20090110
        * [1]=> array
              o [0]=>1234
        * [2]=> array
              o [0]=>AB - CD - DE - FG - HI -
        * [3]=> array
              o [0]=>20090110

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

Discussions similaires

  1. Utiliser exec plusieurs fois dans find
    Par Tex-Twil dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 12/03/2008, 15h49
  2. [XSLT] variable définie plusieurs fois dans la même portée
    Par dhallennem dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/02/2008, 16h48
  3. Réponses: 4
    Dernier message: 21/11/2007, 13h19
  4. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 17h18
  5. Réponses: 2
    Dernier message: 14/06/2006, 09h53

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