【问题标题】:PHP - Simple HTML DOM Parser - Getting FATAL ERROR when html is OKPHP - 简单的 HTML DOM 解析器 - 当 html 正常时出现致命错误
【发布时间】:2016-06-23 23:57:15
【问题描述】:

我正在尝试解析一个表并将明文输出到另一个表中。我已经走到这一步了:

<?php 
    if (url_exists($url))
    {
        $html = file_get_html($url);
    }
    else 
    {
        echo "URL doesn't exist.";
    }

    if ($html && is_object($html) && isset($html->nodes))
    {
        // Everything checks out
        $table = $html->find('table[border]');
        if (!empty($table))
        {
        $row = $table->find('tr');
        }
    }
    else 
    {
        echo "Fetched page is not ok.";
    }
?>

这会返回一个错误: 致命错误:Call to a member function find() on a non-object in /var/www/html/jsudimak/mailman/webdev-test1.php on line 78

第 78 行是这个:$row = $table-&gt;find('tr');

这意味着:

  • html 有效
  • 我试图解析的表也是有效的

因此,find() 方法仍然返回此错误,这让我感到困惑。

在过去的几天里,我已经广泛调查了这个错误的原因,但我还没有找到解决方案。我还尝试了其他一些解析工具,但仍然没有运气。帮我解决这个问题!!!!

顺便说一句,我正在使用 Simple HTML Dom Parser 来解析表格。

【问题讨论】:

  • 你试过$row = $table-&gt;find('tr')[0];吗?
  • @Nadir 为什么这样不会出错?
  • $html->find('table[border]');和 $table->find('tr');这两个 find 函数在同一个类中吗?
  • @fusion3k 我错了,我的意思是$table = $html-&gt;find('table[border]')[0]; 文档说,除非您在函数find() 中指定索引,否则它将返回一个数组
  • ^ 这是一个很好的收获!

标签: php html dom


【解决方案1】:

使用$table = $html-&gt;find('table[border]')[0];

文档说,除非您在函数find() 中指定索引,否则它将返回一个数组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 2015-06-15
    • 2012-07-14
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多