PHP  »  Articoli  »  Web service 2.0 

Yahoo BOSS: esempi di ricerca sul web

di: Marco Bonzanini     27 Marzo 2009

Dopo aver introdotto il lettore all'utilizzo del servizio di ricerca Yahoo BOSS, è giunto il momento di approfondire l'argomento con qualche esempio più dettagliato che ci suggerisca alcuni possibili casi d'uso in una situazione reale.

Gli ingredienti di questi paragrafi saranno i concetti già presentati riguardanti il funzionamento del servizio, in modo particolare dell'interfaccia di tipo REST, con l'aggiunta di alcune indicazioni riguardanti l'uso dell'estensione SimpleXML per l'interpretazione dei risultati. Tale estensione è già attiva di default nelle normali installazioni di PHP5.

Interpretare la risposta XML

Per semplicità, nella nostra ricerca riutilizzeremo il codice già proposto e spiegato in precedenza, che andremo ad elaborare a seconda delle nostre esigenze:

// Application ID
$appid = 'MIA-APP-ID';

// Alcuni parametri
$param = array();
$param[] = "appid={$appid}";
$param[] = "format=xml"; // Risposta in XML
$param[] = "filter=-porn"; // Filtro pornografia
$param[] = "type=html"; // Solo documenti html nei risultati

// Costruisco la stringa dei parametri tipo param1=value&param2=value2&...
$param = implode('&', $param);
// Pulizia query
if (empty($_REQUEST['query'])) {
die("Cosa stai cercando?");
}
$query = urlencode($_REQUEST['query']);
// URL del servizio
$url = "http://boss.yahooapis.com/ysearch/web/v1/{$query}?{$param}";
// Effettuo la chiamata HTTP ed ottengo la risposta XML
if ($result = file_get_contents($url)) {
// Gestione dei risultati
// ...
}

La richiesta HTTP al servizio di ricerca viene effettuata mediante la funzione file_get_contents(), ma potrebbe essere eseguita in modo analogo tramite la funzione curl_get_contents() proposta in precedenza. Nel codice di esempio, la variabile $result è una stringa che viene popolata con il documento XML di risposta. Per trasformare questa stringa in una struttura dati facilmente gestibile, è sufficiente utilizzare la funzione simplexml_load_string() che genera un oggetto (di tipo SimpleXMLElement) con alcune particolarità molto semplici. Il seguente codice crea appunto tale oggetto nella variabile $xml:

$xml = simplexml_load_string($result);

La struttura del documento XML di risposta era già stata presentata in precedenza. In modo particolare, abbiamo notato che all'interno del nodo radice, è presente un nodo figlio che contiene l'intero insieme dei risultati, in inglese result set, chiamato appunto <resultset_web>. Nel nostro oggetto $xml, l'accesso a questo elemento avviene semplicemente come se si trattasse di una variabile pubblica, ossia $xml->resultset_web (a sua volta un oggetto). Nel documento XML, osserviamo che il tag possiede alcuni attributi, che possiamo recuperare sfruttando le funzionalità di SimpleXML:

foreach ($xml->resultset_web->attributes() as $key => $value) {
echo "Attributo {$key}: valore {$value}<br />";
}

La funzione SimpleXMLElement::attributes() restituisce quindi gli attributi dell'elemento XML in questione sotto forma di array associativo. Nel nostro caso ci aspettiamo di ottenere i valori per i seguenti attributi:

  • count: il numero di risultati recuperati dalla query (default 10)
  • start: la posizione di partenza nella lista dei risultati (default 0 per la prima posizione)
  • deephits: il numero (approssimato) dei risultati disponibili per la query effettuata
  • totalhits: il numero (approssimato) dei risultati disponibili a meno dei doppioni, che sono invece contati nel valore di deephits

Guide PHP

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti