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...
![]()
Partager