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 pour balises XML [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut Expression régulière pour balises XML
    Bonjour,

    je ne maitrise pas totalement les expression reguliere mais je pensais avoir créer celle qui me convenais

    je veux toutes les balises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <page1>aaa</page1>
    <page2>aaa</page2>
    <page3>aaa</page3>
    ............
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $pattern = '/<page[0-9]+>.*<\/page[0-9]+>/';
    $ok = preg_match_all($pattern, $fichier, $matches, PREG_PATTERN_ORDER);//renvoi 1 si ok
    if($ok == 1)
    {
       print_r($matches);
     
    }
    mais il me renvoi un seul element contenant tous dans le tableau et pas les 3.

  2. #2
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous aussi vous devez indiquer le caractère non-gourmand de l'expression régulière (c'est à dire qu'elle cherche par défaut la correspondance la plus longue). Soit vous spécifier le modificateur U :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '~<page[0-9]+>.*</page[0-9]+>~U';
    Soit vous êtes plus strict sur le motif, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '~<page[0-9]+>[^<]*</page[0-9]+>~';
    Soit vous rendez juste un quantifieur précis de l'expression non-gourmand en le succédant de ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '~<page[0-9]+>.*?</page[0-9]+>~';
    A votre convenance

    Attention : ne les cumulez pas, leur effet en serait inversé (le cumul de 1 et 3 : rendra à nouveau la partie de l'expression concernée gourmande).

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Je pense que ton xml est mal foutu

    J'aurais utilisé un attribut à tes balises page, du genre <page num="1">contenu</page> , ensuite une requête Xpath en se servant du DOM et le tour était joué

  4. #4
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut
    Merci pour vos réponses c'est résolu. En fait, je suis en php 4.3.10 et d'après des recherche sur internet le DOM c'est en PHP5.

    Je connaissait pas cette notion de gourmandise des expressions. ^^

    ps : le xml est ce qu'il est.. mais je suis d'accord avec toi. J'aurais préféré avoir un id.

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

Discussions similaires

  1. Trouver une expression régulière pour les valeurs des noeuds XML
    Par Motin dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/10/2011, 18h51
  2. [RegEx] Expression régulière pour les balises HTML
    Par meloo dans le forum Langage
    Réponses: 3
    Dernier message: 09/07/2009, 16h23
  3. Réponses: 6
    Dernier message: 29/06/2009, 14h32
  4. [RegEx] expression régulière pour remplacer des balises
    Par oceanbigone dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2007, 19h11
  5. Réponses: 2
    Dernier message: 27/02/2007, 10h16

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