2010-07-18 32 views
6

tôi có mã html này. Im sử dụng Simple HTML Dom để phân tích dữ liệu thành tập lệnh php của riêng tôi.cách in các ô của bảng bằng ký tự đơn giản html

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

tôi cần phải nhận được văn bản bên trong TDs trong một mảng, ví dụ:

$ array [0] = array ('Greg Nhà', 'Century City'); $ array [1] = mảng ('Dexter Morgan', 'Miami');

Tôi đã thử một số cách để có được điều đó nhưng tôi đã thất bại trong mỗi và tất cả mọi người trong số họ. Ai đó có thể cho tôi một tay không?

+0

Bạn nên sử dụng [DOM và Xpath] (http://stackoverflow.com/questions/2019422/regex-problem-in-php) – quantumSoup

+0

tôi có để làm điều đó bằng cách sử dụng Simple HTML Dom;) – andufo

Trả lời

11

này nên làm:

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

hoạt động hoàn hảo. cảm ơn! – andufo

+0

@ andufo, @ Karim, Bạn có thể vui lòng cho tôi biết cách bạn tạo đối tượng ($ html) trong đối tượng dom không. Vì vậy, bạn đã sử dụng nó như: - $ table = $ html-> find ('# theTable'); – Bajrang

1

@lucia nie

Bạn nên làm điều này như vậy:

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

Nó sẽ làm việc .. thử này

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

Bạn cũng có thể nhận dữ liệu từ bất kỳ thẻ html nào ngay cả các thuộc tính ...

Các vấn đề liên quan