0

私は Google CSE を使用するプロジェクトに取り組んでいます。このステップでは、そこから JSON の結果を取得するコードを作成しています。コードは次のとおりです。

<?php
function cURL($url, $ref, $p) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
if ($p) {
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
}
$result = curl_exec($ch);
curl_close($ch);
if ($result) {
    return $result;
} else {
    return '';
}
}

if (isset($_GET['keyword'])) {
$keyword = $_GET['keyword'];
} else {
echo 'salah bro!';
}
$cseNumber = 'aaa'; // Key for the API thing
$key = 'bbb'; //Key for Nofriani's account: sorta a password
$start = '1';
$file = cURL('https://www.googleapis.com/customsearch/v1?key=' . $key . '&cx=' . $cseNumber . '&q=' . $keyword . '&siteSearchFilter=i&alt=json&start=' . $start, 'https://www.googleapis.com/customsearch/v1?key=' . $key . '&cx=' . $cseNumber . '&q=' . $keyword . '&siteSearchFilter=i&alt=json&start=' . $start, null);
echo $file;

?>

それは完璧に機能し、Google CSE の最初の結果を 10 取得しました。残念ながら、API では、一括で取得できる結果は 10 件に制限されています。ここで、ループを実行して、100 個の結果を 1 つの結果ページ (個別の 10 ページではなく) で取得するつもりです。私はこれを追加しました:

$start= '';
$file = cURL('https://www.googleapis.com/customsearch/v1?key=' . $key . '&cx=' . $cseNumber . '&q=' . $keyword . '&siteSearchFilter=i&alt=json&start=' . $start, 'https://www.googleapis.com/customsearch/v1?key=' . $key . '&cx=' . $cseNumber . '&q=' . $keyword . '&siteSearchFilter=i&alt=json&start=' . $start, null, $start);
return $file;

function getResult() {
    for ($i = 0; $i <= 90; $i+=10) {
        $file .= cURL($url, $ref, $p, ($i + 1));
        for ($j = 0; $j < 10; $j++) {
            echo $file;
        }
    }
}

?>

しかし、それは同じようには機能しませんでした。ここでいくつかのヒントを試しました: PHP curl を使用して複数のソースを開くにはどうすればよいですか? しかし、それもうまくいきませんでした:(誰かがこれを解決するのを手伝ってくれますか?ありがとう..

4

1 に答える 1

0

パラメータや連結など、多くのことを忘れています。適切な機能は次のようになります

アップデート

function getResult($key,$cseNumber,$keyword) { // parameter added
    for ($i = 1; $i <= 10; $i++) {
        $file = cURL('https://www.googleapis.com/customsearch/v1?key=' . $key . '&cx=' . $cseNumber . '&q=' . $keyword . '&siteSearchFilter=i&alt=json&start=' . $i, 'https://www.googleapis.com/customsearch/v1?key=' . $key . '&cx=' . $cseNumber . '&q=' . $keyword . '&siteSearchFilter=i&alt=json&start=' . $i, null); // . removed from here
        echo $file;
    }
}
于 2013-05-17T04:16:47.237 に答える