【问题标题】:Simple HTML DOM Can't get first TD in TR简单的 HTML DOM 无法在 TR 中获得第一个 TD
【发布时间】:2019-01-17 17:34:24
【问题描述】:

我在使用 SourceForge 的 PHP Simple HTML DOM Parser 1.81 解析表格时遇到问题。我有 PHP 7.1。我做了这个测试来解释我的问题。

我有这个 html 文件 test.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div class="workers">
            <table>
                <tr>
                    <td>Bob</td>
                    <td>Plumber</td>
                </tr>
                <tr>
                    <td>Jane</td>
                    <td>Lawyer</td>
                </tr>
            </table>
        </div>
    </body>
</html>

这是我的 PHP 代码:

<?php
require('simple_html_dom.php');
// Create DOM from URL or file
$html = file_get_html('test.html');

// creating an array of elements
    $table = $html->find('table',0);

    foreach($table->find('tr') as $row) {

        $rowKey = $row->find('td',0)->plaintext;

        var_dump($row_key);

        $value = $row->find('td',1)->plaintext;

        var_dump($value);

        echo "rowkey=".$rowkey;
        echo "value=".$value;
        echo "<br>";
    } 
?>

在我的示例中,我无法获取名为 $rowkey 的行的第一个 td 的值。它返回 null。

如果有任何帮助或建议,我将不胜感激。谢谢。

【问题讨论】:

标签: parsing html-parsing


【解决方案1】:

您似乎正在使用rowKeyrow_key rowkey。我的建议是选择 一个 变量名并坚持使用它:-)

更严重的是,var_dumpecho 都不会使用您设置的变量来保存 DOM 引用。相反,他们将使用一些 other 值,在这种情况下,该值似乎是未初始化的值。

如果您将它们全部更改为 rowKey(或其他,如果您愿意),它应该可以正常工作。

【讨论】:

  • row_key 错误只是在测试中。它没有解释为什么最后的行键没有值。我把 row_key 改成了 rowkey 还是不行。
  • @user1964612,即使您将其更改为 rowkey,也与 rowKey(大写 K)不同。按照建议,使用一个变量名。
猜你喜欢
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 2013-10-12
  • 1970-01-01
相关资源
最近更新 更多