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 :

[RegExp] Problème avec une REGEXP [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Par défaut [RegExp] Problème avec une REGEXP
    Bonjour à tous.

    Voila mon problème :

    Immaginons la chaine de caractères suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $structure = '
    <cat id="5" valid="1">
    </cat id="5">
    <cat id="2" valid="1">
    <cat id="3" valid="1">
    </cat id="3">
    <cat id="4" valid="0">
    </cat id="4">
    </cat id="2">';
    Je voudrais pouvoir récupérer l'id de n'importe quel cat parent d'un autre. Par exemple, pour récupérer l'id de l'élément parent de la cat d'id 3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $id = 3; //la cat d'id 3
    $idsup = preg_replace('!<cat[\s]+id="(\d+)"[\s\S]+<cat[\s]+id="'.$id.'"[\s\S]+</cat id="'.$id.'"[\s\S]+</cat[\s]+id="\d+">!sU','$1',$structure);
    Seulement, il faudrait que je puisse dire à la REGEXP que dans
    <cat[\s]+id="(\d+)"
    et
    </cat[\s]+id="\d+">

    Le \d+ est le même nombre. Mais bien sur, je ne connais pas ce nombre car c'est celui que je cherche...


    Merci de m'éclairer, j'ai vraiment besoin de cette regexp (d'ailleurs, il faudra peut-être utiliser un preg_match_all non ??).


    Finalement, j'ai repensé l'organisation de la chaine de caractères (qui est un fichier en fait), et je n'ai plus besoin de cette RegExp. OUF !

  2. #2
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    Sinon je vois pas pourquoi tu met 2 fois l'ID, un tag de fermeture ferme, il ne définit normalement rien.

    Bon alors:

    <cat id="3" valid="1">
    Du texte à capturer
    </cat>

    le regex serait quelque chose qui ressemblerais à:
    <cat id=[\"']?[3][\"']?[^>]*>((\n|\r|.)*)</cat>

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Par défaut
    Je mettais l'id dans le tag de fermeture afin de savoir à quel élément appartenais ce tag (donc, pas besoin de vérifier si les autres tags ouverts sont refermés pour savoir quel est le tag de fermeture de tel élément).


    Mais c'est bon, j'ai finalement tout modifié, le fichier n'est plus du tout organisé de cette manière.

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

Discussions similaires

  1. Petit problème avec une regexp
    Par Beleg dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 25/02/2008, 17h46
  2. Problème de performance avec une regexp
    Par NicoV dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 21/02/2008, 18h46
  3. Galère avec une regexp
    Par Jjeje007 dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2007, 19h51
  4. [RegEx] Filtrer une requête avec une regexp
    Par _kal_ dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2007, 12h05
  5. separation numero et signe avec une regexp
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2006, 10h09

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