【发布时间】: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->find('tr');
这意味着:
- html 有效
- 我试图解析的表也是有效的
因此,find() 方法仍然返回此错误,这让我感到困惑。
在过去的几天里,我已经广泛调查了这个错误的原因,但我还没有找到解决方案。我还尝试了其他一些解析工具,但仍然没有运气。帮我解决这个问题!!!!
顺便说一句,我正在使用 Simple HTML Dom Parser 来解析表格。
【问题讨论】:
-
你试过
$row = $table->find('tr')[0];吗? -
@Nadir 为什么这样不会出错?
-
$html->find('table[border]');和 $table->find('tr');这两个 find 函数在同一个类中吗?
-
@fusion3k 我错了,我的意思是
$table = $html->find('table[border]')[0];文档说,除非您在函数find()中指定索引,否则它将返回一个数组 -
^ 这是一个很好的收获!