how to print cells of a table with simple html dom

Andres SK picture Andres SK · Jul 19, 2010 · Viewed 22.2k times · Source

i have this html code. Im using Simple HTML Dom to parse the data into my own php script.

<table>
    <tr>
        <td class="header">Name</td>
        <td class="header">City</td>
    </tr>
    <tr>
        <td class="text">Greg House</td>
        <td class="text">Century City</td>
    </tr>
    <tr>
        <td class="text">Dexter Morgan</td>
        <td class="text">Miami</td>
    </tr>
</table>

I need to get the text inside the TDs in an array, example:

$array[0] = array('Greg House','Century City'); $array[1] = array('Dexter Morgan','Miami');

I've tried several ways to get that but i've fail in each and everyone of them. Can someone give me a hand?

Answer

karim79 picture karim79 · Jul 19, 2010

This should do:

// get the table. Maybe there's just one, in which case just 'table' will do
$table = $html->find('#theTable');

// initialize empty array to store the data array from each row
$theData = array();

// loop over rows
foreach($table->find('tr') as $row) {

    // initialize array to store the cell data from each row
    $rowData = array();
    foreach($row->find('td.text') as $cell) {

        // push the cell's text to the array
        $rowData[] = $cell->innertext;
    }

    // push the row's data array to the 'big' array
    $theData[] = $rowData;
}
print_r($theData);