我正在尝试格式化通过 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 的内容来自外部源并且它们更改了单元格的顺序,则会出错。