parser tableau HTML

ciboulette
Invité n'ayant pas de compte PHPfrance

10 août 2009, 22:12

bonjours j'aimerai parser un tableau HTML de cette forme :
<table cellpadding="0" cellspacing="0">
<tr>
<td>Michel</td><td>1m85</td><td>40 ans</td>
</tr>
<tr>
<td>François</td><td>1m78</td><td>25 ans</td>
</tr>
<tr>
<td>Anne</td><td>1m64</td><td>19 ans</td>
</tr>
</table>
et j'aimerai avoir un rendu/recuperation de type :
array(
array("Michel","1m85","40ans"),
array("François","1m78","25ans"),
array("Anne","1m64","19ans")
);
je sais que cette question a deja du etre posé mais sur le net je ne trouve pas grand chose au final , un truc avec les DOM et XSLT mais ça ne marche pas ...
peut-etre qu'il existe une class special pour faire ceci... enfin merci pour les information futur :)

ViPHP
ViPHP | 3607 Messages

11 août 2009, 09:19

Une des solutions serait les expressions regulières (http://lumadis.be)
Tu récupère en premier lieu chaque contenu de <tr /> et ensuite tu traite le contenu des <td />

Et même que si ton tableaux reste rigoureux comme tu l'as montré, tu pourrais faire quelque chose comme ça:
<?php
$tab='<table cellpadding="0" cellspacing="0">
<tr>
<td>Michel</td><td>1m85</td><td>40 ans</td>
</tr>
<tr>
<td>François</td><td>1m78</td><td>25 ans</td>
</tr>
<tr>
<td>Anne</td><td>1m64</td><td>19 ans</td>
</tr>
</table>';

// on enlève les </tr>
$tab=str_replace('</tr>','',$tab);
// on enlève le </table>
$tab=str_replace('</table>','',$tab);
// on enlève le <table ... >
$tab=preg_replace('#<table.*>#U','',$tab);

// on récupère chaque ligne
$entries=explode('<tr>',$tab);

// à toi de faire le traitement, la c'est simple à coup de str_replace et d'explode tu t'en sorts ;)