我有以下代码
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范围的修复程序。请帮忙。
答案 0 :(得分:3)
在scraping_digg
函数声明变量:
$ret = array();
答案 1 :(得分:1)
行号是最重要的信息!
$ret[] = $item;
此行可能会触发通知,在函数开头添加类似
的内容$ret=array();
答案 2 :(得分:1)
因为$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;
}
答案 3 :(得分:1)
我认为您不会在函数范围内初始化$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;
}
答案 4 :(得分:1)
我甚至在digg的主页上找不到div
类的news-summary
。可能永远不会执行foreach
循环,因为PHP无法找到您正在寻找的任何div
。因此,永远不会声明$ret
。
但是你可以在函数顶部添加$ret = array();
作为他的回答中提到的hsz,以使错误消息消失。