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 :

regex pour capturer des groupe qui se repete [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 173
    Points : 88
    Points
    88
    Par défaut regex pour capturer des groupe qui se repete
    Bonjour,

    Un problème pour les experts regex,


    je suis dans le cas suivant

    <toto>

    <description vcap= item1> blablabalblab </description>
    <description vcap = item2> blablabalblab </description>
    <description vcap = item3> blablabalblab </description>


    </toto>

    <tata>

    <description vcap= item4> blablabalblab </description>
    <description vcap = item5> blablabalblab </description>
    <description vcap = item6> blablabalblab </description>

    </tata>

    <titi>

    <description vcap= item7> blablabalblab </description>
    <description vcap = item8> blablabalblab </description>
    <description vcap = item9> blablabalblab </description>

    </titi>


    je cherche uniquement a capturer tout les valeur du parametre vcap de la balise description qui se trouve dans tata, (soit item 4, item 5 et item 6) et ignorer les parametre vcap des autre balise description
    j'ai fais quelque essaie, mais je n'arrive qu'a chopper le dernier parametre vcap de description et pas les autres


    en vous remerciant

  2. #2
    Membre habitué
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 65
    Points : 158
    Points
    158
    Par défaut
    Sans plus d'information, je dirais que tu écrases simplement les valeurs trouvées et par conséquent tu ne récupères que la dernière valeur. Essayes donc en stockant le résultat dans un tableau.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 173
    Points : 88
    Points
    88
    Par défaut
    merci pour la reponse j'ai refait un essai mais mainetenat j'ai que le premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /<tata>.*(?:<description vcap= (\w+\d+)>.*<\/description>)+.*<\/tata>/gs
    il me faudrait un moyen pour bouclé la regex (?:<description vcap= (\w+\d+)>.*<\/description>) enre les 2 <tata></tata>

  4. #4
    Membre habitué
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 65
    Points : 158
    Points
    158
    Par défaut
    Si tu utilises la fonction preg_match_all, tu n'as qu'à itérer le tableau de match.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 173
    Points : 88
    Points
    88
    Par défaut
    le probleme c'est que ça ne match qu'une fois pregmatch all ou non.

    ma regex n'est pas bonne

  6. #6
    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
    Pour parcourir du XML (enfin un truc qui ressemble à du XML ici), utilise les bibliothèques prévues pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $doc = new DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTML($chaine);
    $xpath = new DOMXPath($doc);
    $tata_desc = $xpath->query('//tata/description');
    foreach ($tata_desc as $d) {
        echo $d->getAttribute('vcap');
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 173
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    j'ai finalement utlisé la methode de sabotage et cela fonctionne vraiment mieux que prevu,

    merci de m'avoir ouvert le yeux

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

Discussions similaires

  1. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51
  2. [CP] Des pistes pour capturer des évènements stylet
    Par guipom dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 05/06/2007, 16h12
  3. Regex pour nettoyer des requêtes SQL
    Par gaboo_bl dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/03/2007, 12h03
  4. [Notepad++] utiliser regex pour remplacer des caractères
    Par ilood dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 04/02/2007, 04h06
  5. Réponses: 4
    Dernier message: 05/12/2006, 20h13

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