Per motivi di lavoro, oggi mi sono trovato di fronte a questa difficoltà: verificare se esiste un’immagine – prima di stamparla tramite html – che potrebbe essere anche un’immagine remota su un altro server/dominio, ovvero controllare a partire dall’url dell’immagine.
Se l’immagine è sul filesystem, come probabilmente già saprete conviene sicuramente utilizzare la funzione file_exists, che funziona indistintamente per qualsiasi tipo di file. Per i file remoti sembra invece che non esista una funzione analoga, almeno non una funzione pensata specificatamente per questo scopo. In rete si consiglia di utilizzare file_get_contents, che dovrebbe (non ho provato…) funzionare perfettamente e che però non dovrebbe essere proprio il massimo in termini di performance, visto che – come recita lo stesso manuale – la funzione “reads entire file into a string”, che è troppo per la nostra esigenza iniziale.
Ho invece risolto ricorrendo all’uso di getimagesize, una funzione (anche molto sofisticata) pensata originariamente per leggere le dimensioni di un’immagine. Il ragionamento è semplice: se restituisce le dimensioni dell’immagine che vogliamo verificare, evidentemente l’immagine esiste; se le dimensioni non sono restituite, il contrario. Semplice.
Per facilitarsi la vita, è sufficientemente quindi riscrivere la funzione, sia per inserirla nelle nostre librerie, sia per far sì che in ogni caso restituisca un valore booleano:
function image_exists($url) {
if(getimagesize($url))
return(TRUE);
else
return(FALSE);
}
Fine. Non penso si possa rendere la questione più semplice di così.
Ricordate che se l’url contiene dei caratteri speciali, qualsiasi sia la vostra scelta dovrete comunque affidarvi a urlencode per la codifica.












(09/09/2011, 12:09)
Grande era proprio quello che cercavo!!!
(23/01/2012, 00:05)
Mille grazie per questo tutorial. Stavo impazzendo per trovare una soluzione e non conoscevo un metodo per risolvere.
:)