Lecture du contenu d'une div pouvant contenir des div

Eléphanteau du PHP | 37 Messages

11 juil. 2011, 17:25

Bonjour,

Voici le sujet qui me préoccupe en ce moment :

J'ai besoin d'extraire un paragraphe de classe "Legend" placé éventuellement dans une div de classe "Figure".
Une div "Figure" peut elle-même contenir différentes div (par exemple une div "Note"), dont des div "Figure_i" (figures partielles) qui peuvent aussi contenir un paragraphe "Legend".

Une structure possible peut donc être :

<div class="Figure">
[...]

xxx<div class="Figure_i>
xxx[...]
xxx<p class="Legend"> légende de la figure (a) </p>
xxx</div>

xxx<div class="Figure_i>
xxx[...]
xxx<p class="Legend"> légende de la figure (b) </p>
xxx</div>

xxx<div class="Figure_i>
xxx[...]
xxx<p class="Legend"> légende de la figure (c) </p>
xxx</div>

xxx<div class="Note">
xxx[...]
xxx</div>

<p class="Legend"> légende de l'ensemble</p>

J'ai besoin

1) de pouvoir lire l'ensemble de la div "Figure" sans que ma regex s'arrête à la première balise fermante </div>

2) de pouvoir extraire la légende associée à la div "Figure" en laissant de côté les légendes associées aux petites figures (a), (b), (c)...

Merci grandement par avance pour vos suggestions

devlop78
Invité n'ayant pas de compte PHPfrance

11 juil. 2011, 23:10


Eléphanteau du PHP | 37 Messages

12 juil. 2011, 00:08

Merci de ta réponse "condensée" :wink:

A priori, j'ai encore beaucoup, beaucoup à apprendre !

Pour l'instant, j'ai simplifié le problème en créant une classe Figure_i pour les figures contenues dans un bloc Figure et une classe Legend_i pour les légendes de ces figures.
Comme cela j'accède directement aux légendes principales et aux légendes secondaires.

devlop78
Invité n'ayant pas de compte PHPfrance

12 juil. 2011, 03:47

Ce n'est qu'une suggestion, au fait. Tu peux aussi passer par les expressions régulières. DOMDocument a l'avantage d'être natif et de parser complètement ton code, ce qui te permet de vraiment agir dessus (lire ce que tu veux, modifier ce que tu veux). Il existe aussi des librairies qui mâchent le travail à la façon jQuery.