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 :
Je cherche une expression qui avec la fonction preg_match_all (par exemple) me sortirait dans un tableau les 4 chaines :
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 ....... <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>
Autrement dit le contenu de toutes les cellules y compris celles qui contiennent aussi d'autres cellules.
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 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
J'ai essayé l'expression :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /<td[^>]*>)(.*?)(<\/td>/si
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 ??
Partager