Вопрос по simple-html-dom, html-parsing, php – Как напечатать ячейки таблицы с простым HTML домом

8

У меня есть этот HTML-код. Я использую Simple HTML Dom для анализа данных в моем собственном PHP-скрипте.

<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>

Мне нужно получить текст внутри TD в массиве, например:

$ array [0] = array («Грег Хаус», «Город века»); $ array [1] = array ('Декстер Морган', 'Майами');

Я пробовал несколько способов получить это, но я потерпел неудачу в каждом из них. Может кто-нибудь помочь мне?

Вы должны использоватьDOM и Xpath quantumSoup
я должен сделать это с помощью простого HTML Dom;) Andres SK

Ваш Ответ

3   ответа
1

Вы должны сделать это так:

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

// loop over rows
foreach($html->find('#theTable 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);
3

Это будет работать .. попробуйте это

  $html = file_get_html('mytable.html');
 foreach($html->find('table tr td') as $e){
    $arr[] = trim($e->innertext);
  }

 print_r($arr);

Вы можете получить данные из любого тега html, даже атрибутов ...

13

Это должно сделать:

// 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);
работал отлично. Спасибо! Andres SK
@ andufo, @ Карим, подскажите, пожалуйста, как вы делаете объект ($ html) в объекте dom. Итак, вы использовали его как: - $ table = $ html-> find ('# theTable'); Bajrang

Похожие вопросы