【问题标题】:php domDocument xpath extract links from tablephp domDocument xpath 从表中提取链接
【发布时间】:2013-12-18 10:15:49
【问题描述】:

我正在尝试使用 domDocument 和 xpath 来提取表格的内容,包括某些单元格中链接的 href 属性。下面的代码画了一个空白。

<?php
$url_content='<html>
<body>
<table class="txtable">
<tbody>
    <tr>
        <th>Col 1</th>
        <th>Col 2</th>
        <th>Col 3</th>
        <th>Col 4</th>
    </tr> 
    <tr>
        <td><a href="www.example1.com">link 1</a></td>
        <td>31</td>
        <td>34</td>
        <td>Blue</td>
    </tr> 
    <tr>
        <td><a href="www.example2.com">link 2</a></td>
        <td>41</td>
        <td>44</td>
        <td>Red</td>
    </tr>
</tbody>
</table>
</body>
</html>';

$doc = new DOMDocument();
@$doc->loadHTML($url_content);

$finder = new DomXPath($doc);
$rows = $finder->query("//table[@class='txtable']/tbody/tr");

foreach ($rows->childNodes AS $row){
foreach($row->childNodes AS $cell){
    if (($cell->nodeName == "td") OR ($cell->nodeName == "th")){

        echo $cell->nodeValue."<br>";   
    } else {
        echo $cell->getAttribute('href')."<br>";
    }
}
}

我担心我不了解有关 xpath 或 domDocument 的基本知识。帮助表示赞赏。

我期望 $rows 是行的集合,我可以使用 foreach 对其进行迭代。 echo 语句应该显示每个的内容。

如果孩子不是'td'或'th',在这种情况下它必须是'a'那么我想回显href属性

我在浏览器中什么也没有得到

如果我从 php 运行,我会得到 ​​p>

PHP 注意:未定义的属性:DOMNodeList::$childNodes in /var/www/follow/php/domtest.php on line 35 PHP 警告:在第 35 行的 /var/www/follow/php/domtest.php 中为 foreach() 提供的参数无效

【问题讨论】:

  • 请始终描述您想要实现的目标,例如发布预期输出。还要给出发生的任何警告和/或错误消息(在这里,它们确实如此)。
  • @Jens 查看添加的其他详细信息。希望你能指出我正确的方向。

标签: php xpath domdocument


【解决方案1】:

foreach ($rows-&gt;childNodes AS $row){

应该是

foreach ($rows as $row){

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多