GetElementsByTagName 格式過濾器(需要緊急協助)
P粉518799557
P粉518799557 2024-04-02 00:41:46
0
2
504

我正在嘗試格式化透過 getElementsByTagName 獲得的 NodeList,實際上我可以獲取每個標籤的內容,但我無法過濾,我正在嘗試使輸出如下:

EXAMPLE:

name: jhon doe
number: 12345678
date: 00/00/0000

但我只得到正常內容:

JOHN DOE
12345678
00/00/0000
lane DOE
7234567890
00/30/0000

或如果我使用 [0],它只會傳回每個標籤的第一個字母/數字。

J
1
0
l
7
3

我目前的程式碼如下,有什麼關於我可以做什麼的提示嗎?

<?php
$string = '
<tbody>
<tr>
<td>JOHN DOE</td>
<td style="background-color: rgb(25, 194, 25);">12345678</td>
<td>00/00/0000</td>
</tr>
<tr>
<td>lANE DOE</td>
<td style="background-color: rgb(25, 194, 25);">7234567890</td>
<td>30/00/0000</td>
</tr>
</tbody>';
$dom = new DOMDocument();
$dom->loadHTML($string);
foreach($dom->getElementsByTagName('td') as $td) {
    echo $td->textContent[0] . '<br/>';
}

P粉518799557
P粉518799557

全部回覆(2)
P粉464208937

您犯的錯誤是您使用了 td 標記,它不會傳回每個記錄,而是傳回每個值(查看您的程式碼)。

首先你應該使用「tr」標籤

其次,您應該使用nodeValue透過提及索引來取得任何特定項目的資料

給予更正後的程式碼供您參考,有任何不清楚的地方請隨時提問



JOHN DOE
12345678
00/00/0000


lANE DOE
7234567890
30/00/0000

';
$dom = new DOMDocument();
$dom->loadHTML($string);
$tr = $dom->getElementsByTagName('tr');
echo $tr->item(0)->nodeValue;

如果你想輸出所有的項目,你可以簡單地使用循環

P粉546257913

您期望姓名號碼日期來自哪裡? PHP 不知道表值的含義,因此您必須以某種方式自行設定它們。

HTML 中沒有指示每個表格單元格的含義,因此您只能猜測並希望表格結構永遠不會改變。這些表格按名稱 - 數字 - 日期排序,因此您可以從儲存格編號推斷出特定 的標籤必須為:0 = 名稱、1 = 數字、2 = 日期。

因此,如果您解析每個表格的 HTML,然後解析每個表格單元格的每行,您可以根據單元格順序新增標籤。

但請注意,如果 HTML 的內容來自外部來源並且它們更改了單元格的順序,則會出錯。

//create an array of labels, based on the cell order per row
$labels=[
    0=>'name',
    1=>'number',
    2=>'date'
    ];

$dom = new DOMDocument();
$dom->loadHTML($string);

// search for table ROWS
$table_rows = $dom->getElementsByTagName('tr');

//loop the ROWS
foreach($table_rows as $row){
   //per ROW node, search for table CELLS
   $row_cells = $row->getElementsByTagName('td');
   //loop the CELLS
   foreach($row_cells as $number => $cell){
     //echo a label based on the cell order + the contents of the cell
     echo $labels[$number].' - '.$cell->textContent.'
'; } }

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板