Bonjour a tous et bonne année =D.
Travaillant actuellement sur un projet consistant a réaliser un interface de calcul matriciels, je me retrouve confronter un petit soucis.
J'essaye désespérément de convertir ma table html en tableau php afin de pouvoir effectuer les différents calculs de matrices.
Pour ne pas vous piquez les yeux, je vous met un code html de test :
Donc deux tableaux html tout simple.
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
20
21
22
23
24
25
26
27
28
29
30
31 <html> <body> <table name="lol" id="tab1"> <tr> <td>a</td> <td>b</td> <td>c</td> </tr> <tr> <td>d</td> <td>e</td> <td>f</td> </tr> </table> <table id="tab2"> <tr> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> </tr> </table> </body> </html>
J'arrive a récupérer et a convertir la première table du document html grâce a ce bout de code :
Ce qui me donne en sortie :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <?php $dom = new DOMDocument(); $html = $dom->loadHTMLFile("htmlTest.html"); $dom->preserveWhiteSpace = false; $tables = $dom->getElementsByTagName('table'); //get all rows from the table $rows = $tables->item(0)->getElementsByTagName('tr'); // get each column by tag name $cols = $rows->item(0)->getElementsByTagName('th'); $row_headers = NULL; foreach ($cols as $node) { //print $node->nodeValue."\n"; $row_headers[] = $node->nodeValue; } $table = array(); //get all rows from the table $rows = $tables->item(0)->getElementsByTagName('tr'); foreach ($rows as $row) { // get each column by tag name $cols = $row->getElementsByTagName('td'); $row = array(); $i=0; foreach ($cols as $node) { # code... //print $node->nodeValue."\n"; if($row_headers==NULL) $row[] = $node->nodeValue; else $row[$row_headers[$i]] = $node->nodeValue; $i++; } $table[] = $row; } print_r($table);
Le problème étant que l'algorithme php ne convertit que la première table rencontré sur la page. Et oublie toutes les autres. J'ai essayer d'utiliser différents sélecteur pour appliquer le code sur les tables que je désirais et ainsi juste a répéter ce code avec deux sélecteurs pour les deux tables, mais rien y fait...
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 Array ( [0] => Array ( [0] => a [1] => b [2] => c ) [1] => Array ( [0] => d [1] => e [2] => f ) )
Si certains d'entre vous savais comment résoudre ce problème ou encore avais d'autres idées pour arriver au même résultat, je lui en serais grandement reconnaissant ^^.
Pour finir je tiens a signaler que j'aurais besoin du coup de deux tableau afin de faciliter les calculs entre eux. Si ça peut également servir (ou déservire ><) le tableau html dans le cas réelle est généré dynamiquement a partir du nombre de lignes et de colonnes saisie par l'utilisateur.
Voila en espérant recevoir une aide précieuse, merci de m'avoir lu.
Fred
Partager