Mira estas funciones que he usado alguna vez:
   Código PHP:
    <?php
   //retorna un arreglo de los directorios que existen
   //en una ruta indicada en $directorio
   function lee_directorios($directorio)
   {
      $dires=array();
      $midir=opendir($directorio);
      $i=0;
      while($archivo=readdir($midir))
         if (is_dir($archivo) && $archivo!="." && $archivo!="..")
            $dires[$i++]=$archivo;
      return $dires;
   }
   //retorna un arreglo de archivos de un directorio dado
   //que cumplan con la extension indicada en $filtro
   function lee_archivos($directorio,$filtro)
   {
      $archs=array();
      $midir=opendir($directorio);
      $i=0;
      while($archivo=readdir($midir))
      {
         $ext=substr($archivo,-3);
         if (!is_dir($archivo) && ($ext==$filtro || !$filtro))
            $archs[$i++]=$archivo;
      }
      return $archs;
   }
?>