代码之家  ›  专栏  ›  技术社区  ›  Andres SK

如何使用简单的HTML DOM打印表格的单元格

  •  8
  • Andres SK  · 技术社区  · 14 年前

    我有这个HTML代码。我使用简单的HTMLDOM将数据解析成自己的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>
    

    我需要在数组中获取TDS中的文本,例如:

    $array[0]=数组(“Greg House”,“Century City”); $array[1]=数组(“dexter morgan”,“miami”);

    我试过几种方法来达到这个目的,但我都失败了。有人能帮我一把吗?

    3 回复  |  直到 10 年前
        1
  •  13
  •   karim79    14 年前

    应该这样做:

    // 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);
    
        2
  •  3
  •   Santhosh Kumar    10 年前

    它会起作用。试试这个

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

    您也可以从任何HTML标记甚至属性中获取数据…

        3
  •  1
  •   koshin    12 年前

    @露西亚聂

    您应该这样做:

    // 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);