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 :

interdir balise preg_match_all [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut interdir balise preg_match_all
    bonjour

    je cherche à recuperer tous entre les balise <toto></toto>

    toto.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    toto><h1>bonjour</h1></toto>
    <toto>
    <h2><p>momo</p></h2>
    </toto><toto>salut</toto>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $file = file_get_contents("toto.xml");
    $file = str_replace("\n", "", $file);
    $file = str_replace("\r", "", $file);
     
    //$pattern = '$<terme>(!</terme>)</terme>$';
    $pattern = '$<toto>(.*)</toto>$';
    preg_match_all($pattern, $file, $matches, PREG_PATTERN_ORDER);
    print_r($matches);
    sorti
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Array
    (
        [0] => Array
            (
                [0] => <toto><h1>bonjour</h1></toto><toto><h2><p>momo</p></h2></toto><toto>salut</toto>
            )
     
        [1] => Array
            (
                [0] => <h1>bonjour</h1></toto><toto><h2><p>momo</p></h2></toto><toto>salut
            )
     
    )

    <h1>bonjour</h1>
    <h2><p>momo</p></h2>
    salut</toto>

    la question est comment lui dire de ne pas prendre les </toto> j ai essayer [^</toto>] mais ca interdi chaque lettre et non pas le terme

    comment faire svp ?

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    La solution la plus simple consiste à utiliser une étoile non-avide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pattern = '#<toto>(.*?)</toto>#';
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    merci

    derniere question c est quoi étoile non-avide

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Par défaut, .* capture le plus possible : il est avide, gourmand, greedy

    .*? capture le moins possible : il est non-avide, non gourmand, ungreedy.

    C'est à rapprocher de l'option U des PCRE, que j'aime beaucoup moins.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    merci

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

Discussions similaires

  1. [RegEx] preg_match_all, récupérer les contenus des balises P
    Par Lost In Translation dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2011, 14h46
  2. [RegEx] Regex URL: interdire balise html ?
    Par xxkirastarothxx dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2010, 02h28
  3. Interdire le référencement de balises, est-ce possible?
    Par Sayrus dans le forum Référencement
    Réponses: 22
    Dernier message: 01/04/2008, 16h36
  4. focus sur une balise p, l'interdire ?
    Par Beleg dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/07/2007, 11h59
  5. [RegEx] preg_match_all et balise multiple
    Par Rakken dans le forum Langage
    Réponses: 1
    Dernier message: 02/12/2006, 20h16

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