PHP Scandir devuelve periodos extras

Así que estoy tratando de construir un script que escanee un directorio y devuelva imágenes aleatorias para usarlas como fondos.

El php se ve así:

$dir = "views/img/bg/";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}

$random_key = array_rand($files, 1);

$random = $files[$random_key];

Entonces, solo estoy usando un jQuery simple para adjuntar las imágenes como fondos:

<script>
$(document).ready(function(){

    $("body").css( "background" , "url(http://'.$url_root.'/views/img/bg/'.$random.'), center center" );

});
</script>

Todo funciona bien, pero la matriz de todas las imágenes en la carpeta de fondo parece estar devolviendo cosas como ''. o '..' en lugar de nombres de imágenes de vez en cuando. No estoy seguro de lo que está pasando, ¿alguna idea?

Respuestas a la pregunta(4)

Su respuesta a la pregunta