2012-12-19 73 views
1

我正在寫一個我正在寫的網絡爬蟲的最後一個地方。網絡爬蟲出現Implode錯誤

網絡爬蟲爬行英國廣播公司新聞,然後插入鏈接到數據庫連同標題和描述等所有的工作,但我有一個數組與所有的啓動網址,以便只有任何開始的鏈接只是插入。

我正在使用foreach循環所有鏈接數組的所有數組變量,並檢查它們是否符合條件,插入到新數組中,然後將其插入到一個字符串中,然後插入到mysql數據庫中。

但是,關於我的內爆功能出現錯誤。我被卡住了。

$bbc_values = array('http://www.bbc.co.uk/news/health-', 'http://www.bbc.co.uk/news/politics-', 'http://www.bbc.co.uk/news/uk-', 'http://www.bbc.co.uk/news/technology-', 'http://www.bbc.co.uk/news/world-', 'http://www.bbc.co.uk/news/england-', 'http://www.bbc.co.uk/news/northern_ireland-', 'http://www.bbc.co.uk/news/scotland-', 'http://www.bbc.co.uk/news/wales-', 'http://www.bbc.co.uk/news/business-', 'http://www.bbc.co.uk/news/education-', 'http://www.bbc.co.uk/news/science_and_enviroment-', 'http://www.bbc.co.uk/news/entertainment_and_arts-', 'http://edition.cnn.com/'); 


    foreach ($links as $link) { 
    $output = array(
"title"  => Titles($link), //dont know what Titles is, variable or string? 
"description" => getMetas($link), 
"keywords" => getKeywords($link), 
"link"  => $link     
); 
if (empty($output["description"])) { 
$output["description"] = getWord($link); 
} 

    foreach ($output as $new_array) { 
if (in_array($new_array['link'], $bbc_values)) { 
    $news_stories[] = $new_array; 
} 
    } 



$data = '"' . implode('" , "', $news_stories) . '"'; 
$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES (" . $data . ")"); 

回答

0

首先,$links沒有定義。你的意思是$bbc_value

否則,您必須關閉第一的foreach(關閉}缺失)

0

裏面你foreach循環中,您有

$news_stories[] = $new_array; 

,這將產生一個數組的數組可能像下面

array(
    array(
     'title'=>'title1', 
     'description'=>'description1', 
     'keywords'=>'keywords1', 
     'link'=>'link1' 
    ), 
    array(
     'title'=>'title2', 
     'description'=>'description2', 
     'keywords'=>'keywords2', 
     'link'=>'link2' 
    ) 
); 

和你正在使用implode以外的環這樣

$data = '"' . implode('" , "', $news_stories) . '"'; 

除非您在數組中指定一個索引,否則不應該工作。所以,如果你使用下面的代碼

$data='"' . implode('" , "', $news_stories[0]) . '"'; 
echo $data; 

然後它會從$news_stories陣列破滅第一陣列項,它會產生以下

"title1" , "description1" , "keywords1" , "link1" 

如果要產生以下

$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES ('title1' , 'description1' , 'keywords1' , 'link1')"); 

那麼你可以使用

$data="'" . implode("' , '", $news_stories[0]) . "'"; 

所以,如果你寫

$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES (" . $data . ")"); 

然後它就會出來產生

$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES ('title1' , 'description1' , 'keywords1' , 'link1')");