Php 使用DOMXPath解析html表数据和a href值

Php 使用DOMXPath解析html表数据和a href值,php,dom,xpath,Php,Dom,Xpath,我有一个包含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><

我有一个包含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>

我正在尝试以不同的格式输出表,我想知道除了链接所在单元格的表单元格的值之外,如何获得href的值。例如,对于我想要获得“link1”和“value1”的第一个表单元,或者,您可以检查内部循环(迭代每个cols的循环)中是否存在链接(因为其中一些没有链接):

foreach($rows作为$row){
$cols=$row->getElementsByTagName('td');
foreach($cols作为$col){
echo“value=”。$col->nodeValue;
如果($xpath->evaluate($count(./a),$col)>0){//检查是否存在锚定
回显“| link=”。$xpath->evaluate(/string(./a/@href),$col);//如果有,则回显href值
}
回声“
”; } 回声“
”; }

当然可以@Dan很高兴这有帮助
$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";
}
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/>";
}