Recuperare le immagini da Flickr utilizzando PHP e JSON

Creato il 25 ottobre 2010 da Dymissy

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


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :