pour reprendre la problemeatique :
(copier coller de mon post sur developpez.net)
j'ai créé, pour une action de BTS, un moteur de template.
une de ses fonctionnalitées est de substituer un "bloque" par "autre
chose" (pas important ici)
pour substituer ce block, je doit tout d'abord l'extraire, pour ce
faire, je fait un preg_match() qui me retourne mon block, je fait mes
traitemeznts, puis je fait un str_replace() pour substituer le nouveuax
block.
mon pb se situe au niveau du preg_match :
cette fonction accepte trois parametre.
L'un d'eux est une expression reguliere.
cette expression est : (expliquée juste au dessus) :
"/<li>.*?\[ *testBDD *; *block *= *li *\].*<\/li>/sU"
mon pb :
au lieu de prendre le dernier <li> disponible, elle prend le
premier...cad :
Code:
<li> ne pas me prendre mias quand meme pris </li>
<li> je veut cette partie </li>
<li> ne pas me prendre et ca marche </li>
donnera :
Code:
<li> ne pas me prendre mias quand meme pris </li>
<li> je veut cette partie </li>
alors que je ne veut que :
Code:
<li> je veut cette partie </li>
meric de votre aide svp ))
A voir également:
Une petite aide sur une expression reguliere svp :))
hansap
Messages postés23Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention19 octobre 2005 18 oct. 2005 à 17:33
je pourrait, mias action BTS oblige, je doit faire environ 400 lignes...
si je fait la recherche moi meme, je vait exploser le score, et puis les pauvre profs, deja qu'ils sont perdu avec un tri bulle...
...t'imagine?
hansap
Messages postés23Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention19 octobre 2005 19 oct. 2005 à 08:59
alors, apres moult test :
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 :
<!--StartFragment -->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?
hansap
Messages postés23Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention19 octobre 2005 19 oct. 2005 à 09:44
non, car j'ai l'option /U qui equivaut a tous les "*" suivits de "?"
par acqui de conscien, j'ai essayé :
<!--StartFragment -->array(1) {
[0]=>
string(86) "<li> ne pas me TESTBDD mias quand meme pris </li>
<li> je veut cette partie </li>"
}