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 sur multiline [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut expression reguliere sur multiline
    Bonjour,

    J'ai un problème d'expression régulière. J'essaye de récupérer une partie d'un texte qui comprend des sauts de ligne. Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $source = "ABCD";
     
    if (preg_match("#A(?P<text>.*)D#", $source, $matches)) {
        echo $matches["text"];
    }
    Ce code affiche BC, ce qui correspond à la bonne réponse dans ce cas là.

    Mais si j'ai un texte comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $source = "A
    B
    C
    D";
     
    if (preg_match("#A(?P<text>.*)D#", $source, $matches)) {
        echo $matches["text"];
    }
    preg_match renvoie faux.

    Comment faire pour récupérer le texte malgré les sauts de ligne ?

    Papy !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Bonsoir,

    d'après http://fr.php.net/manual/en/referenc....modifiers.php il suffit d'ajouter un pattern modifier m au pattern utilisé (ici : "#A(?P<text>.*)D#m").

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    c'est aussi ce que je croyais mais ça ne fonctionne pas mieux

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    dans ton cas, c'est surtout le modificateur s qu'il faut.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par sabotage Voir le message
    dans ton cas, c'est surtout le modificateur s qu'il faut.
    ça marche avec ça. Merci beaucoup !

    Il me reste un dernier problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $source = "
    A
    B
    C
    D
    C
    D--";
     
    if (preg_match("#(?P<text>.*)[D]{1}#s", $source, $matches)) {
        echo $matches["text"];
    }
    ne s'arrète pas au premier D mais me renvoie
    A
    B
    C
    D
    C

    Comment je peux lui dire de s'arréter à la première occurence trouvée ?

    Papy !

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (preg_match("#(?P<text>.*)[D]{1}#sU", $source, $matches)) {
        echo $matches["text"];
    }

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Impecc ! Merci !

    Pas facile des regex ... mais très puissant !

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

Discussions similaires

  1. Expression reguliere sur n lignes
    Par lagdu dans le forum Général Python
    Réponses: 12
    Dernier message: 17/02/2009, 12h18
  2. expressions regulieres sur advice
    Par austin P. dans le forum Spring
    Réponses: 2
    Dernier message: 17/07/2007, 18h07
  3. Aide sur expression Reguliere
    Par chaser_T dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2006, 15h19
  4. expression reguliere appliquée sur une liste deroulante
    Par 18Marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/06/2006, 23h23
  5. Coup de pouce sur expression reguliere
    Par calimero642 dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2006, 12h36

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