我有一个表,其列数可以根据报废页面的配置而改变(我无法控制它)。我想只获取特定列中的信息,由列标题指定。
这是一个简化的表格:
<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
标记,在这种情况下,image列是第一个,因此我们可以抛出这个并使用下一个。
看了大约一个半小时,但我对DomDocument的功能和操作并不熟悉。这个问题很麻烦。
答案 0 :(得分:0)
Simple HTML DOM Parser可能有用。您可以查看手册。基本上你应该使用类似的东西;
$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)是image列。您可以添加其他代码以进行改进。
PS:查找所有图像源的简便方法;
$images = $html->find('tr td img');
foreach ($images as $image){
$imageUrl[] = $image->src;
}