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.
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¶m2=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:
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso Google AdWords Base27 Febbraio 2012 a Milano |
|
|
Corso Google AdWords Base28 Marzo 2012 a Roma |