我正在嘗試格式化透過 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/>'; }
您犯的錯誤是您使用了 td 標記,它不會傳回每個記錄,而是傳回每個值(查看您的程式碼)。
首先你應該使用「tr」標籤
其次,您應該使用nodeValue透過提及索引來取得任何特定項目的資料
給予更正後的程式碼供您參考,有任何不清楚的地方請隨時提問
如果你想輸出所有的項目,你可以簡單地使用循環
您期望
姓名
、號碼
和日期
來自哪裡? PHP 不知道表值的含義,因此您必須以某種方式自行設定它們。HTML 中沒有指示每個表格單元格的含義,因此您只能猜測並希望表格結構永遠不會改變。這些表格按名稱 - 數字 - 日期排序,因此您可以從儲存格編號推斷出特定 的標籤必須為:0 = 名稱、1 = 數字、2 = 日期。
因此,如果您解析每個表格行的 HTML,然後解析每個表格單元格的每行,您可以根據單元格順序新增標籤。
但請注意,如果 HTML 的內容來自外部來源並且它們更改了單元格的順序,則會出錯。