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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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