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...
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?Envoyé par Mr N.
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!
bon, j'ai essayé :
avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part "/<li>[(?!<li>).]*?\[ * TESTBDD *; *block *= *<li> *\].*<\/li>/sU"
signifiant : . OU (non <li>)
Code : Sélectionner tout - Visualiser dans une fenêtre à part [(?!<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 :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part (?:</li>\s*)<li>.*</li>
mais ca ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part (</li>\s*)<li>.*</li>... c'est un developpeur c#, il me dit ses regex conforme aux normes ECMA, est-ce le cas des regex PCRE (differentes des POSIX)Warning: Unknown modifier '<' in f:\action1 framework\index.php
sauriez vous juste repondre a cetet question : comment noter :
"tout sauf <li> de 0 a n fois"
?? svp
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?
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.
A toi d'adapter cette regex qui marche sous Perl :
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é).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <li>([^<]|<(?!/li))*TESTBDD([^<]|<(?!/li))*</li>
(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 ^^Envoyé par Jedai
pour la folie pure... je suis en train de voir ca lol!
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 :
mais bon, je vait etudier le code de monsieur jedï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]=> 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?
Ca marche !!!!
telle est le type de motif qui fonctionne!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2"/<li>(.(?<!<li>))*\[ *testBDD *; *block *= *li *\].*<\/li>/sU"
en versino simplifée :
MERCI A TOUS!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2"/<li>(.(?<!<li>))*.*<\/li>/sU"
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)
merci lol
c'est vrai que j'ai pas mal appris
sauf a ecrire convenablement dans les forums...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager