<?php
// include the class nusoap. This class can be obtained from http://dietrich.ganx4.com/nusoap/index.php
// Once downloaded, put it in somewhere in your site tree, and change the next line to reflect that
include("nusoap.php");
// create a instance of the SOAP client object
// remember that this script is the client,
// accessing the web service provided by Google
$soapclient = new soapclient("http://api.google.com/search/beta2");
// uncomment the next line to see debug messages
// $soapclient->debug_flag = 1;
// set up an array containing input parameters to be
// passed to the remote procedure
class clsGoogleApi {
// These properties are used in the class:
var $theResultSet; // holds the results of the search as given by google api
var $theResults=array(); //holds the results, and is intended to do the traversing
var $theRowShown=0; // internal field. Holds the index to the last row shown
var $theMaxResults; // internal field. Holds the given max results parameter to the constructor
var $flgError = false; // indicates if was there error or not
var $theSearchQuery; // the Search query as returned by Google Api
var $theEstimatedResultsCount; // The number of results found by the Api
function clsGoogleApi($search_what,$start,$maxResults) {
global $soapclient;
$params = array(
'key' => 'tbZF6P1QFHJB23E5zqVwgyytmQPuVkLC', // Google license key This is a valid license. But get your own license, by going to www.google.com/api
'q' => $search_what, // search term
'start' => $start, // start from result n
'maxResults' => $maxResults, // show a total of n results
'filter' => false, // remove similar results
'restrict' => '', // restrict by topic
'safeSearch' => false, // remove adult links
'lr' => '', // restrict by language
'ie' => '', // input encoding
'oe' => '' // output encoding
);
// invoke the method on the server
$this->theResultSet=$soapclient->call("doGoogleSearch", $params, "urn:GoogleSearch", "urn:GoogleSearch");
$this->theMaxResults=$maxResults;
// print the results of the search
if ($this->theResultSet['faultstring']) {
echo $this->theResultSet['faultstring']."<br>";
$this->flgError=true;
} else {
$this->flgError=false;
$this->theRowShown=0;
$this->theSearchQuery=$this->theResultSet['searchQuery'];
$this->theEstimatedResultsCount=$this->theResultSet['estimatedTotalResultsCount'];
if (is_array($this->theResultSet['resultElements'])) {
$this->theResults=array();
foreach ($this->theResultSet['resultElements'] as $r) {
$result["URL"]=$r['URL'];
$result["cached-size"]=$r['cachedSize'];
$result["snippet"]=$r['snippet'];
$result["directory category"]=$r['directoryCategory'];
$result["related information present"]=$r['relatedInformationPresent'];
$result["directory title"]=$r['DirectoryTitle'];
$result["summary"]=utf8_decode($r['summary']);
$result["title"]=utf8_decode($r['title']);
$this->theResults[]=$result;
}
}
}
}
function getResultNextItem() {
$result=$this->theResults[$this->theRowShown];
$this->theRowShown++;
if (($this->theRowShown > $this->theMaxResults) or ($this->theRowShown > $this->theEstimatedResultsCount)) {
$result=false;
}
return $result;
}
}
/*
This is an example on how to use the class.
$myQuery=new clsGoogleApi("michael jackson",0,25); // Search for Michael Jackos, starting on the first found record, and getting a max of 25 items
if ($myQuery->flgError) { // if error found do something
echo "Error!";
} else {
echo "Search of ". $myQuery->theSearchQuery." got ".$myQuery->theEstimatedResultsCount." results<hr>";
$item=0;
echo "<ul>";
while ($result=$myQuery->getResultNextItem()) {
$item++;
echo "<li> $item - ".$result["title"]." (".$result["URL"].")<br>".$result["snippet"]."(".$result["cached-size"].")";
}
echo "</ul>";
}
*/
?>