Certo che non può funzionare perchè tu utilizzi la variabile $file dopo che hai chiuso l'handle, quando già non ha più valore logico. Prova così.
Codice PHP:
<?php
// Nota che l'operatore !== non è esistito fino alla versione 4.0.0-RC2
if ($handle = opendir('/percorso/ai/file')) {
/* Questa è la maniera corretta di eseguire un loop all'interno di una directory. */
while (false !== ($file = readdir($handle))) {
if(strpos($file,"jpg")) echo "[img]$file[/img]
}
closedir($handle);
}
?>