Expression reguliere et guillemet double

WRInaute discret
'soir,

Je souhaite recuperer le contenu entre:

<div align="justify">

et

</div>

Ainsi j ai essayé avec <div align="justify">(.*)</div>

dc ds du php

eregi("^<div align=\"justify\">(.*)</div>$",$ligne,$reg);

et avec ou sans ^ et $,...

pas moyen que ça fonctionne, c est sans doute encore a cause du caractere particulier " que je 8O 8O

Help me please!
 
WRInaute impliqué
Essaie ça

Code:
$contenu = preg_replace("#(.*<div align=\"justify\">)(.*)(</div>.*)#si","$2",$reg);

J'ai testé avec ce bout de phrase ("Cool <div align="justify">ça marche</div> !") et ça fonctionne ;)
 
WRInaute discret
hmm,

j oublié un element de taille, en fait, plus precisement:

$lachaine="bon ben ..
c le debut ... <div align="justify"> youpi, c est ici
que l'on recup</div>mais pas ici";



ou des fois c :

$lachaine="bon ben c le debut ...
c le debut ... <div align="justify"> youpi, c est ici que l'on recup</div>mais pas ici";


(Le code est symbolique, car les doubles guillemets a l interieur de la chaine, faudre des \, c juste pour la lisibilité ;) )

Ainsi l interpretation de l expression reguliere est differente en fct de $lachaine


Je fait une boucle pour parcourir chaque ligne de la chaine, puis je fais les tests suivant:


$lignis="la 1ere ligne de la chaine $lachaine, puis la 2eme...";
if ($deb_bal<>2)
{
if ($deb_bal==0)
{
preg_match('|^<div align="justify">(.*)$|i', $lignis, $reg);
$lignis=$reg[1];
}
if ($lignis<>"") {$deb_bal=1;$totchain.=$lignis;}

if ($deb_bal==1)
{
preg_match('|^(.*)</div>$|i', $lignis, $reg);
$lignis=$reg[1];
if ($lignis<>"") {$totchain.=$lignis;$deb_bal=2;$lignis="";}

}
}


Ainsi, il test en fonction si la balise </div> est sur la meme ligne ($lignis) que <div.. La s applique une expression reguliere differente

$deb_bal==0 correspond au fait que pas encore trouvé la balise div d ouverture
$deb_bal==1 c trouvé, on cherche la fin
$deb_bal==2 on a tout le contenu entre les balises div




Le resultat en sortie, suite a la fin de lecture de $lachaine, il retourne theoriquement, le contenue entre les balises DIV

Mais ya comme un ti pb 8O 8O.
J ai meme essayé avec le code de The Jedi, mais ri1 de bien :(
 
WRInaute passionné
Hum, t'as pas vraiment regardé mes liens, hein ? ;)

Code:
preg_match('|<div align="justify">(.*)</div>|si', $ligne, $reg);

Inutile de faire ces tests, la recherche se fait sur toutes les lignes grâce à l'option s.

Fred
 
Discussions similaires
Haut