La scorsa volta abbiamo visto come recuperare le immagini da Flickr utilizzando l’ormai famoso formato JSON attraverso jQuery. Questa settimana, sempre utilizzando JSON, vedremo come recuperare le immagini attraverso il PHP. I primi passi da compiere sono capire bene come funziona JSON e, poi recuperare l’id del nostro account su Flickr. Entrambi i passi sono stati ampiamente trattati nell’articolo precedente, vediamo quindi quali sono le funzioni fornite dal PHP per la gestione di JSON.
json_encode vs json_decode
Le due funzioni più importanti sono:
- json_encode()
- json_decode()
La prima funzione, json_encode(), prende in ingresso un qualsiasi tipo di dato (eccetto il tipo resource) e restituisce una stringa in formato JSON. Consiglio di passare in ingresso alla funzione un’array per diminuire la possibilità di errori. La seconda funzione, json_decode(), è quella che utilizzeremo noi in questo articolo. La funzione prende in ingresso una stringa contenente l’oggetto JSON già codificato e restituisce un oggetto o un array associativo, a seconda che settiamo a 0 o a 1 il secondo parametro. Per maggiori informazioni sulle funzioni per JSON fornite da PHP rimando alla pagina ufficiale: http://php.net/manual/en/book.json.php
Funzione PHP
La funzione che andremo a creare prende in ingresso, come per quella realizzata in Javascript, il nostro ID utente e il numero di immagini da visualizzare. Nel caso non vengano passati questi parametri, restituirà le prime 5 immagini prese dalla timeline pubblica. Per effettuare la connessione a Flickr, utilizziamo la funzione Curl. Prima di effettuare il decode abbiamo bisogno di rendere standard il codice JSON restituito da Flickr attraverso due semplici str_replace. La funzione è la seguente:
function get_flickr_images( $id = "", $number = 5) { $url = (isset($id[0])) ? "http://api.flickr.com/services/feeds/photos_public.gne?id=".$id."&format=json" : "http://api.flickr.com/services/feeds/photos_public.gne?format=json"; $ch = curl_init($url); curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE); $data = curl_exec($ch); curl_close($ch); //json in formato standard $data = str_replace('jsonFlickrFeed(','',$data); $data = str_replace('})','}',$data); //decode json $datas = json_decode($data,true); return array_slice($datas['items'], 0, $number); }
Tale funzione restituisce un array di dimensione n dove n è il numero di elementi che vogliamo visualizzare. Con un semplice foreach possiamo stampare a schermo le immagini con lo stile che vogliamo. Un esempio è il seguente:
$images = get_flickr_images("34599522@N04",5); foreach( $images as $image ) { echo ""; }
Download e Demo
Possiamo vedere all’opera o scaricare lo script attraverso i seguenti link:
Demo Download