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 :

mon motif de regex ne passe pas [RegEx]


Sujet :

Langage PHP

  1. #21
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Moi je vois deux solutions :
    Soit tu prend le parseur de tinyButStrong (puisque tu t'en es rapproché)
    Soit tu changes de moteur de template, genre PHP...

  2. #22
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par Mr N.
    Moi je vois deux solutions :
    Soit tu prend le parseur de tinyButStrong (puisque tu t'en es rapproché)
    Soit tu changes de moteur de template, genre PHP...
    bein... en fait... si j'ai développé ce moteur, c'est pas pour le plaisir, pourquoi changer quelque chose qui marche?
    he bien : pour une action de BTS : un soft à présenter lors de l'examen...
    donc voila pourquoi je vous embête.. pour avoir un 20!

  3. #23
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    bon, j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/<li>[(?!<li>).]*?\[ * TESTBDD *; *block *= *<li> *\].*<\/li>/sU"
    avec :
    signifiant : . OU (non <li>)

    bon, la logique n'y est pas, mias c'est une idée...
    qui me retourne : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

    edit : sur un autre forum, on m'aconseiller de suivre cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?:</li>\s*)<li>.*</li>
    ou
    mais ca ne marche pas :
    Warning: Unknown modifier '<' in f:\action1 framework\index.php
    ... c'est un developpeur c#, il me dit ses regex conforme aux normes ECMA, est-ce le cas des regex PCRE (differentes des POSIX)

  4. #24
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    sauriez vous juste repondre a cetet question : comment noter :
    "tout sauf <li> de 0 a n fois"
    ?? svp

  5. #25
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    ce que j'ai du mal a comprendre, c'est que mon expression me semble juste...

    totu d'abord, elle cpature bien ce qu'il faut.
    secondement son pb est qu'elle est greedy (gourmande).

    hors j'utilise l'option //U qui la rend non gourmande...

    ce qui marche d'ailleur... pour une partie...mais par pour l'autre...
    "/$blockDebut.*\[ *$indexBalise *; *block *= *$blockNom *\].*$blockFin/sU"
    =>
    "/<li>.*\[ *testBDD*; *block *= *li*\].*<\/li>/sU"

    ...
    d'ailelur si je fait :
    "/$blockDebut.*?\[ *$indexBalise *; *block *= *$blockNom *\].*?$blockFin/s"
    j'ai le meme pb, ne serait-ce pas un bug de preg_match?

  6. #26
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Mais c'est coi en fait le problême? *a un peut de male a suivre*
    Tu doit récupèrer la N°ième ligne de <li> ?
    Dans ce cas tu pourais stocker toute les lignes <li> dans un tableau et tu choisirais $tab[N] pour récupèrer ta ligne li... (De plus tu ne parcoure le document qu'une fois, même pour 20 recherche...)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  7. #27
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    A toi d'adapter cette regex qui marche sous Perl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <li>([^<]|<(?!/li))*TESTBDD([^<]|<(?!/li))*</li>
    Mais ta demande n'est pas claire car on ne comprend pas comment le <li> est sélectionné (ici c'est le <li> qui contient TESTBDD qui est sélectionné).

    (Par ailleurs, tout le monde te le dira : les regexs pour manipuler du HTML c'est de la folie pure !!)

    --
    Jedaï

  8. #28
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par Jedai
    A toi d'adapter cette regex qui marche sous Perl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <li>([^<]|<(?!/li))*TESTBDD([^<]|<(?!/li))*</li>
    Mais ta demande n'est pas claire car on ne comprend pas comment le <li> est sélectionné (ici c'est le <li> qui contient TESTBDD qui est sélectionné).

    (Par ailleurs, tout le monde te le dira : les regexs pour manipuler du HTML c'est de la folie pure !!)

    --
    Jedaï
    parfait, je vait tester de suite ^^

    pour la folie pure... je suis en train de voir ca lol!

  9. #29
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    je pense que je vait arreter d'expliquer quoi que ce soit, je n'arrive jamais a me faire comprendre (et cela m'incombe)

    pour faire simple : je veut pouvoir recupérer tout ce qui est compris dans un bloc donné à partir d'une partie de ce qu'il y a dans ce bloc (pas clair)

    je veut, a partir de "balises uniques" definies dans un bloc, pouvoir recupérer celui ci (un peu mieux)

    je veut, à partir d'un "label" (ex : [ label] ) recupérer le bloc qui le contient (ex : <li>...</li>)...


    en sachant que ce block est donné par le label : [label; block=li]

    voila...
    mais en gros, mon souci de base est :
    je fait :
    <?
    $chaine = "
    <li> ne pas me prendre mais quand meme pris </li>
    <li> je veut cette partie </li>
    <li> ne pas me prendre et ca marche </li> ";
    preg_match("/<li>.*je veut cette partie.*<\/li>/sU", $chaine, $occurence);
    var_dump($occurence);
    ?>

    et j'obtient :

    array(1) { [0]=&gt; string(86) "<li> ne pas me prendre mias quand meme pris </li> <li> je veut cette partie </li>" }donc, la ou je ne devrait avoir que la ligne du milieu, j'aen ai deux...bug de preg_match?
    mais bon, je vait etudier le code de monsieur jedï

  10. #30
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    Ca marche !!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "/<li>(.(?<!<li>))*\[ *testBDD *; *block *= *li *\].*<\/li>/sU"
    telle est le type de motif qui fonctionne!
    en versino simplifée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "/<li>(.(?<!<li>))*.*<\/li>/sU"
    MERCI A TOUS!!!!

  11. #31
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Impec !
    Tu dois etre un vrai pro des regexp maintenant

    Sinon pense aussi à la casse : li == LI == Li == lI. Mais bon à ton niveau c'est de la roupie de sansonnet 8)

  12. #32
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut

    merci lol

    c'est vrai que j'ai pas mal appris

    sauf a ecrire convenablement dans les forums...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [RegEx] Mon regex ne fonctionne pas..la variable retourne Array
    Par joboy84 dans le forum Langage
    Réponses: 1
    Dernier message: 09/06/2008, 18h11
  2. pourquoi je ne passe pas dans mon action
    Par fk04 dans le forum Struts 1
    Réponses: 5
    Dernier message: 03/10/2007, 21h20
  3. mon calendrier ne passe pas 2039
    Par acryline dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 07/08/2007, 14h54
  4. [Tableaux] PB mon IF ne passe pas pourquoi ?
    Par foxdream94 dans le forum Langage
    Réponses: 10
    Dernier message: 06/06/2007, 12h00
  5. Réponses: 2
    Dernier message: 31/07/2006, 08h48

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