2014-10-29 3 views
0

Я пытаюсь выполнить программный поиск Google с PHP, но безрезультатно. Я получаю объект JSON, за которым я работаю, но у него есть [totalResults] => 0, для всего, что я искал. ApiKey, который я использую, является ключом сервера, а customSearchEngineKey - для пользовательской поисковой системы, которую я создал с помощью инструкций here. Я знаю, что это работает, потому что я пробовал в otherLanguage, но не могу использовать otherLanguage для окончательной программы (я бы не сказал, почему), но когда я переношу ее на PHP, она по какой-то причине терпит неудачу. Зачем??PHP Google Search не возвращает ничего

Это мой PHP код, кстати:

<?php 
    // turn on the use of session variables, if it has not already been done 
    session_start(); 
    // declare function that creates the URL for the Google search associated with a query 
    function makeSearchString($query, $startNumber = 1, $count = 10) 
    { 
     // declare $apiKey,$customSearchEngineKey 
     $apiKey = "AIzaSyCW6jCkVPGWRd2PN1ZHeOKq8haJqkYqEwQ"; 
     $customSearchEngineKey = "003207291839125798740:4fbhl2kr0mi"; 
     // set up searchString with $apiKey,$customSearchEngineKey 
     $searchString = "https://www.googleapis.com/customsearch/v1?key=" . $apiKey . "&cx=" . $customSearchEngineKey . "&q="; 
     // split query into an array with ' ' as the delimiter (regex is "/[ ]+/") 
     $theQueries = explode("/[ ]+/", $searchString); 
     // for each subquery in theQueries 
     foreach ($theQueries as $subquery) 
      // append subquery to searchString 
      $searchString .= $subquery; 
     // specify that the response should be in JSON, in searchString 
     $searchString .= "&alt=json"; 
     // try to turn safeSearch on 
     $searchString .= "&safe=high"; 
     // if startNumber is not 1 
     if ($startNumber != 1) 
      // specify startNumber, in searchString 
      $searchString .= ("&start=" . $startNumber); 
     // if count is not 10 
     if ($count != 10) 
      // specify count, in searchString 
      $searchString .= ("&num=" . $count); 
     // return searchString 
     return $searchString; 
    } 

    /* Don't forget that you need to test this function. Try it with at least 2 searches... */ 
    // declare function that returns the JSON associated with a Google search tied to query 
    function getJSONStringFor($query) 
    { 
     // if $query is a URL that contains the first few characters in the defaultSearchString 
     if (strpos($query, "https://www.googleapis.com/customsearch/v1?key=") !== false) 
     { 
      // return the file contents for that $query 
      return file_get_contents($query); 
     }  
     // makeSearchString for $query and get the JSONString from that searchString 
     return file_get_contents(makeSearchString($query)); 
    } 

    // if the searchData in $_SESSION is not already initialized 
    if (!isset($_SESSION['searchData'])) 
     // initialize it 
     $_SESSION['searchData'] = array(); 
    // get the terms to search for /* where from, I don't know!! They should at least be an array of Strings */ 
    /* For now, we can simply create an array of three terms to search for */ 
    $terms = array("alopecia", "Superman", "Spiderman"); 
    // for each term 
    foreach ($terms as $term) 
    { 
     // get the JSONString 
     // parse the JSONString into an associative array 
     $array = json_decode(getJSONStringFor($term), true); 
     print_r($array); /* returns no results for some reason */ 
     // for each searchResult in that array 

      // if there is pagemap and it has a cse_image 
       // add it as a searchResult for that queryResult 
     // append queryResult to searchData 
    } 
?> 
+0

Кто-нибудь собирается мне помочь, или иначе отправить некоторые советы по-моему? –

ответ

0

Я понял это. Проблема была с моей makeSearchString(), а именно с этой линии:

$theQueries = explode("/[ ]+/", $searchString);

Я случайно говорит PHP компилятор расколоть $searchString в массив, когда я пытался расколоть $query в массив. Итак, я изменил его на $theQueries = explode("/[ ]+/", $query);, и все прошло хорошо!