2017-04-04 4 views
0

次のPHPコードを使用してGoogle CSE APIの最初の50件の結果を取得しようとしています。CSE Googleカスタムページapiは50の結果PHPを表示しますか?

問題は、最初の位置が最初のページの1つで、2番目の位置が2番目のページの2番目であるように、結果が崩れてしまう2つのページを組み合わせることです。誰かが私がここで間違っていることを教えてもらえますか?

私が実際にやりたいことは、配列の最初の50個の結果を得ることですが、以下のコードは私に混在した結果を与えます。

$apiKey = "theapikey"; 

$query = "news"; 

for ($i = 1; $i <= 5; $i++) { 

$ch = curl_init(); 

$request = "https://www.googleapis.com/customsearch/v1?q=" . urlencode("$query") . "&cx=013594553343653397533:q-qkkaltmay" ."&key=" . $apiKey . "&start=" . $i; 

curl_setopt($ch, CURLOPT_URL, $request); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

$output = curl_exec($ch); 
$output = json_decode($output); 

foreach($output->items as $result) { 

    $url = $result->link; 

    ${"items" . $i}[] = $url; 

    } 

} 

    echo json_encode($items1); 

答えて

1

あなたが別の配列に10件の結果の各セットを追加しているように見えますので、$を占める特別項目1を使用すると、単一のすべての50件の結果をしたい場合は$のitems2は、次の10、などがあり、最初の10件の結果を持っています配列の名前でインデックスを使用する必要はありません。

また、結果セットの番号ではなく、最初のクエリを1で開始し、2番目のクエリを11で開始し、3番目のクエリを21など

アレイに追加する前に結果に何かが存在することを確認することもできます。

私はもっとそうのような何かを行う可能性があります:

$apiKey = "theapikey"; 
$query = "news"; 
$items = array(); 

for ($i = 1; $i <= 5; $i++) { 

    $ch = curl_init(); 

    $request = "https://www.googleapis.com/customsearch/v1?" . 
    "q=" . urlencode("$query") . 
    "&cx=013594553343653397533:q-qkkaltmay" . 
    "&key=" . $apiKey . 
    "&start=" . (($i - 1)*10 + 1); 

    curl_setopt($ch, CURLOPT_URL, $request); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

    $output = curl_exec($ch); 
    $output = json_decode($output); 

    foreach($output->items as $result) { 

    if ($url = $result->link && trim($url)) $items[] = $url; 

    } 

} 

echo json_encode($items); 

最後に、カップルの警告:このJSON APIは非推奨となり、おそらく離れて起こっているかどうかについてan existing questionあり

  • 次の10件の検索結果のそれぞれに対して、クォータが加算されます。毎月クエリがなくなるのを心配している場合や、クォータの増加を支払っている場合は、必要なものだけを取得することを検討することをお勧めします。
+0

廃止されたv1についてのご回答ありがとうございました。このメソッドを使用する場合、空の配列に戻ります。 – Jan

+0

また、$リクエストを記録するとき、正しいURLが返されますが、配列は空のままです。 – Jan

+0

最初に、JSON/REST APIのアップデートがあります:http://stackoverflow.com/questions/43041894/google-cse-rest-api-is-v1-deprecated-is-there-a-v2 –

関連する問題