Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2008, 15h54   #1
Invité régulier
 
Inscription : mars 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 17
Points : 6
Points : 6
Par défaut Extraire toutes les cellules d'une page html

Bonjour,

Je cherche a faire une regex qui pourrait extraire le contenu de toutes les cellules (balises td ou th) d'une page html. En fait la page peut avoir des cellules qui contiennent elles mêmes des tableaux (et donc des cellules aussi).

Ex de code Html :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
.......
 
<table border="0">
<tr>
<td>colonne 1</td>
<td>
 
<table border="0">
<tr>
<td>toto</td>
<td>titi</td>
</tr>
</table>
Coucou
 
</td>
</tr>
</table>
Je cherche une expression qui avec la fonction preg_match_all (par exemple) me sortirait dans un tableau les 4 chaines :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
chaine 1 :
colonne 1
 
chaine 2 :
<table border="0">
<tr>
<td>toto</td>
<td>titi</td>
</tr>
</table>
Coucou
 
chaine 3 :
toto
 
chaine 4 :
titi
Autrement dit le contenu de toutes les cellules y compris celles qui contiennent aussi d'autres cellules.

J'ai essayé l'expression :

Code :
1
2
 
/<td[^>]*>)(.*?)(<\/td>/si
Mais ça ne marche pas s'il y a un tableau dans la cellule, car il me retourne le premier </td> trouvé mais qui ne correspond pas à la fin du <td> rencontré au début.

Je pense que l'expression pourrait s'écrire en français comme :

Une chaine commençant par une balise td,
suivi par des caractères et éventuellement du couple <table></table> qui comprendrait un certain nombre de caratères au milieu et serait répété 0 fois ou plus
et qui finirait par </td>

Le fait d'avoir le(s) couple(s) <table></table> assurerait de trouver la bonne fin de cellule je pense, mais comment écrire cela ??
Patrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 23h35   #2
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
Oui et non. Parce que tu considères que tu ne gérerais qu'un seul niveau de profondeur. C'est pas optimal si tu ne sais pas quelle profondeur tu as à traiter.

Essaie plutôt avec une fonction PHP récursive.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h21.


 
 
 
 
Partenaires

Hébergement Web