Bonjour,

J'ai un texte comme celui-ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<div class="dscg">
<p>CR&Eacute;ATION D&rsquo;ENTREPRISE</p>
<div class="encadre-dossier">&bull; L&rsquo;Ab&eacute;c&eacute;daire de la d&eacute;cision pour cr&eacute;er son entreprise <br />
&bull; Cr&eacute;er, un acte accessible &agrave; tous <br />
&bull; Comment former davantage d&rsquo;entrepreneurs en France ? <br />
&bull; Changer de statut social <br />
&bull; Envisager une augmentation de capital dans une SARL</div>
<p>&nbsp;</p>
<div class="encadre-dossier"><span class="soustitre-dossier">L&rsquo;AB&Eacute;C&Eacute;DAIRE DE LA D&Eacute;CISION POUR CR&Eacute;ER SON ENTREPRISE </span><br />
Avant d&rsquo;&ecirc;tre une s&eacute;rie d&rsquo;actes techniques et administratifs, la cr&eacute;ation d&rsquo;entreprise est d&rsquo;abord un choix de vie qui engage l&rsquo;individu dans l&rsquo;int&eacute;gralit&eacute; de sa personnalit&eacute; mais aussi sa famille et ses biens. Elle suppose au d&eacute;part une formidable envie d&rsquo;oser, coupl&eacute;e &agrave; un fort esprit de responsabilit&eacute;. Cette aventure requiert une bonne dose de courage pour aller surfer sur les innombrables vagues de contraintes et d&rsquo;&eacute;cueils sociaux, &eacute;conomiques, administratifs, fiscaux, financiers, parsemant la trajectoire de tout futur dirigeant. Ce dossier n&rsquo;est pas un guide technique mais seulement un premier &laquo;poteau indicateur&raquo; destin&eacute; &agrave; s&rsquo;orienter dans le vaste espace entrepreneunarial.</div>
<p>&nbsp;&nbsp;A comme Aides financi&egrave;res</p>
<p>&nbsp;</p>
<p>Aides financi&egrave;res : Il existe une grande diversit&eacute; d&rsquo;aides financi&egrave;res. Chaque r&eacute;gion dispose de son propre dispositif sachant que par principe : <br />
&bull; Les aides n&rsquo;arrivent souvent que plusieurs mois apr&egrave;s la cr&eacute;ation. <br />
&bull; Il faut &ecirc;tre capable de s&rsquo;en passer, voire de fonctionner sans elle. <br />
&bull; Elles ne doivent repr&eacute;senter qu&rsquo;une partie infime du plan de financement.</p>
<p>&nbsp;</p>
</div>
Ce texte est saisi par l'utilisateur avec FCKEditor. Lorsqu'il sélectionne une partie du texte et lui applique le style "dscg" , cela encapsule le texte sélectionné entre les balises <div class="dscg"> et </div>

Et je souhaite récupérer le texte contenu entre <div class="dscg"></div>

Pour l'instant j'y arrive avec ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
//$doTexte = le texte récupéré en $_POST via le formulaire de saisie
preg_match_all('#<div class="dscg">(.*[<div .*?</div>]*)</div>#s', $doTexte, $m);
 
//$x_doResume = partie du texte à récupérer puis envoyer à BDD   
$x_doResume = mysql_real_escape_string($m[1][0]);

Le problème que je rencontre :
Si l'utilisateur s'embrouille les pinceaux avec les styles ou les formats (pour ceux qui connaissent FCKEditor ...), il se peut que certaines balises <div> se chevauchent ou soient incohérentes. On peut finalement arriver à un texte comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<div class="dscg"
// 
// du texte
//
<div class="encadre-dossier">
// autre texte
</div>
// autre texte
<div>
// autre texte
</div>
J'ai donc ici une balise ouvrante <div> en trop.
Là, ma Regex ne fonctionne plus correctement.


Le but de cette opération :
Je précise que le texte devant être extrait sera affiché gratuitement, le texte entier sur abonnement.

Afin que l'administrateur saisisse et formate le texte en une seule fois sans avoir à re saisir et reformater dans un autre champ le contenu gratuit, il selectionne la portion de code et lui applique le style "dscg" (ce qui crée en fait les balises <div class="dscg"></div>)

Avez vous une soluce pour traiter la récursivité des balises <div> (même en cas de chevauchement) ?
Ma regex est-elle correcte ?

Merci à tous.