Телефон: +7 (926) 245-03-63

Получаем список файлов в PHP (+пример с комментариями)

Часто, особенно у новичков, которые с базами данных еще не уначились работать возникают потребности в сканировании папок на наличиеразличных файлов. У меня давно проблем с файлами нет, но на медне программирую одну функцию в своей CMS появилась необходимость работать с файлами при загрузке. И одна из задач стояла получить список уже имеющихся файлов в паке. Получилась вот такая функция, я постарался максимально ее расписать.

// _____________________________________________________________________________
function sdf_files_dir_list($_path)
// Выполняет: построение списка (только) файлов по указаному пути, без сканирования в глубину
// Возвращает: список всех файлов либо массивом, либо строчкой с раздеделителем
// _path - директория
{
$not_dir=array('.','..');// отмечаем что считается не директорием
$dir=opendir($_path);// открываем директорий
// - специально разбиваем на директориии и файлы
$dir_array=array();// массив директориев
$r=array();// массив файлов
// пройтись по всему списку файлов и директориям
while ($file=readdir($dir))
{ // если попалось в поле зрения '.' или '..', то переходим к перебору следующего значения
  if (in_array($file,$not_dir)) { continue; }
  if (filetype($_path.'/'.$file)!='dir')// если это НЕ директория, то
  { $file_len=sizeof($r);// узнаем длину имеющегося массива с файлами
    $r[$file_len]=array();
    $r[$file_len]['name']=$file;// запоминаем имя файла
    $r[$file_len]['size']=filesize($file);// запоминаем размер файла
    $expl=explode('.',$file);// разбиваем имя файла на элементы, разделитель точка
    $c=sizeof($expl);// узнаем сколько элементов получилось чтобы взять последний, который и является расширением
    $r[$file_len]['ext']=mb_strtolower($expl[$c-1],'UTF-8');// запоминаем расширение файла
  }
}
// сортируем полученный массив файлов по алфовиту 
$r=sdf_array_sorting_key($r,'name');
return $r;// возвращаем результат
}


// Непосредственный сам вызов и результат записывается в массив
// с массивом уже делаете все что хотите
$rr=sdf_files_dir_list($_SERVER['DOCUMENT_ROOT'].'/');

// Например: вывод на экран Имя - Размер - Расширение
$c=sizeof($rr);// узнаем сколько элементов в массиве
$it=0;
while ($it<$c)
{ echo $rr[$it]['name'].' - '.$rr[$it]['size'].' - '.$rr[$it]['ext'].'<br/>';
  $it++;
}