我有一个包含3列的表,其中每列可以包含一个链接或数据,如下所示:
<tr><td><a href='link1'>value1</a></td><td><a href='link2'>value2</a></td><td><a href='link3'>value3</a></td></tr>
<tr><td><a href='link4'>value4</a></td><td>value5</td><td>value6</td></tr>
<tr><td>value7</td><td><a href='link8'>value8</a></td><td>value9</td></tr>
<tr><td>value10</td><td>value11</td><td><a href='link12'>value12</a></td></tr>
<tr><td>value13</td><td>value14</td><td>value15</td></tr>
我可以使用以下代码获取表格中每个单元格的数据:
$data = file_get_contents('pathtomyfile');
$dom = new domDocument;
@$dom->loadHTML($data);
$dom->preserveWhiteSpace = true;
$xpath = new DOMXPath($dom);
$rows = $xpath->query('//tr');
foreach ($rows as $row) {
$cols = $row->getElementsByTagName('td');
foreach ($cols as $col) {
echo $col->nodeValue;
}
echo "\n";
}
我正在尝试以不同的格式输出表格,并且想知道除了链接所在的单元格的表格单元格的值之外,我还能获得href的值。例如,对于第一个表格单元格,我想获得“link1”和“value1”。
答案 0 :(得分:0)
或者,您可以检查内部循环内部(迭代每个cols的内部循环)内部是否存在链接(因为其中一些链接不存在):
foreach ($rows as $row) {
$cols = $row->getElementsByTagName('td');
foreach ($cols as $col) {
echo 'value = ' . $col->nodeValue;
if($xpath->evaluate('count(./a)', $col) > 0) { // check if an anchor exists
echo ' | link = ' . $xpath->evaluate('string(./a/@href)', $col); // if there is, then echo the href value
}
echo '<br/>';
}
echo "<br/>";
}