0

私はウェブクローラーを構築しています。ページ上のすべてのリンクとそのタイトル、メタディスクリプションなどを見つけます。次に、必要なリンクのすべての開始 URL を提供する配列を作成しました。したがって、リンクをクロールし、その URL が開始 URL を示す配列内の任意の値で始まる場合は、$news_stories に挿入します。

唯一の問題は、それらに挿入されていないように見えることです。ページが空白に戻り、array_intersect ステートメントが配列を必要としており、私が持っている配列を指定していないことが表示されます。

要約すると、コードが機能しない場所と、必要な URL が挿入されない理由を理解するのに苦労しています。

$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/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/'
);

// BBC Algorithm
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);
    }
}

$new_stories = array();

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

    print_r($news_stories);
}
4

3 に答える 3

0

配列を $new_stories としてデカールし、$news_stories を印刷しています..... diff は 'S' です

コードがこのループ内にあるかどうかを確認してください。そうではないと思います...

if (array_intersect($output['link'], $bbc_values) == true) {
    echo 'here';
}
于 2012-12-20T13:52:15.963 に答える
0

うーん、array_intersect が比較に必要なものだとは思いませんhttp://php.net/manual/en/function.array-intersect.php

多分あなたは in_array http://php.net/manual/en/function.in-array.phpを探したいと思うでしょう

于 2012-12-20T13:54:50.780 に答える