我有以下代码
function scraping_digg() {
// create HTML DOM
$html = file_get_html('http://digg.com/');
// get news block
foreach($html->find('div.news-summary') as $article) {
// get title
$item['title'] = trim($article->find('h3', 0)->plaintext);
// get details
$item['details'] = trim($article->find('p', 0)->plaintext);
// get intro
$item['diggs'] = trim($article->find('li a strong', 0)->plaintext);
$ret[] = $item;
}
// clean up memory
$html->clear();
unset($html);
return $ret;
}
当我运行它时,我会得到以下错误。
Undefined variable: ret in /opt/lampp/htdocs/web_scrapper/example/scraping/example_scraping_digg.php on line
我找不到$ret范围的修复程序。请帮忙。
在scraping_digg
函数开始时声明变量:
$ret = array();
行号将是最重要的信息!
$ret[] = $item;
这一行可能会触发通知,在功能开始时添加类似的内容
$ret=array();
因为$ret
未定义。。。
尝试在循环之前声明$ret
function scraping_digg() {
// create HTML DOM
$html = file_get_html('http://digg.com/');
$ret = array();
// get news block
foreach($html->find('div.news-summary') as $article) {
// get title
$item['title'] = trim($article->find('h3', 0)->plaintext);
// get details
$item['details'] = trim($article->find('p', 0)->plaintext);
// get intro
$item['diggs'] = trim($article->find('li a strong', 0)->plaintext);
$ret[] = $item;
}
// clean up memory
$html->clear();
unset($html);
return $ret;
}
我认为您没有在函数范围内初始化$ret
和$item
。
function scraping_digg() {
// create HTML DOM
$html = file_get_html('http://digg.com/');
$ret = array();
// get news block
foreach($html->find('div.news-summary') as $article) {
$item = array();
// get title
$item['title'] = trim($article->find('h3', 0)->plaintext);
// get details
$item['details'] = trim($article->find('p', 0)->plaintext);
// get intro
$item['diggs'] = trim($article->find('li a strong', 0)->plaintext);
$ret[] = $item;
}
// clean up memory
$html->clear();
unset($html);
return $ret;
}
我甚至在digg的主页上找不到任何div
和news-summary
的类。foreach
循环可能永远不会执行,因为PHP找不到您要查找的任何div
。因此,$ret
从未被声明。
但是,您可以在函数的顶部添加$ret = array();
,就像hsz在回答中提到的那样,使错误消息消失。