我有一个表,它的列数可以根据废弃页面的配置而改变(我无法控制它)。我只想从特定列中获取信息,该列由列标题指定。
下面是一个简化的表格:
<table>
<tbody>
<tr class='header'>
<td>Image</td>
<td>Name</td>
<td>Time</td>
</tr>
<tr>
<td><img src='someimage.png' /></td>
<td>Name 1</td>
<td>13:02</td>
</tr>
<tr>
<td><img src='someimage.png' /></td>
<td>Name 2</td>
<td>13:43</td>
</tr>
<tr>
<td><img src='someimage.png' /></td>
<td>Name 3</td>
<td>14:53</td>
</tr>
</tbody>
</table>
我只想提取表的名称(列2)。然而,如前所述,列的顺序是未知的。例如,Image列可能不在那里,在这种情况下,我想要的列将是第一个。
我想知道是否有任何方法可以做到这一点与DomDocument
/DomXPath
。也许在第一个tr
中搜索字符串"Name",并找出它是哪个列索引,然后使用它来获取信息。一个不太优雅的解决方案是查看第一列是否有img
标记,在这种情况下,图像列是第一列,因此我们可以抛弃这种方式并使用下一个。
已经看了大约一个半小时了,但是我对DomDocument函数和操作不熟悉。这个有很多问题
简单的HTML DOM解析器可能有用。您可以查看手册。基本上你应该使用;
$url = "file url";
$html = file_get_html($url);
$header = $html->find('tr.header td');
$i = 0;
foreach ($header as $element){
if ($element->innerText == 'Image') { $num = $i; }
$i++;
}
我们找到了哪个列($num)是图像列。您可以添加其他代码来改进。
PS:查找所有图片来源的简便方法;
$images = $html->find('tr td img');
foreach ($images as $image){
$imageUrl[] = $image->src;
}