аватар Автор: Сергей Касаткин | 01 июля 2013 14:30

Статьи / PHP /

Как подсчитать количество файлов в папке (директории) PHP?

Допустим Вам нужно узнать, сколько всего изображений загрузили пользователи в качестве аватарок или сколько из файлов папки имеют расширение png. Подобные задачи встречаются довольно-таки часто. Так как же узнать количество файлов в папке (директории)?

Создаём функцию для подсчёта количество файлов в папке (директории) PHP


Приступим к созданию функции:

1. dir() возвращает экземпляр класса directory. Аргумент - путь к директории.
2. read() метод, который читает директорию.
3. close() после прочтения закрываем директорию

С используемым функционалом разобрались, можно переходить к созданию файла с функцией. В корневой директории (вы можете на своё усмотрение выбрать другую) создаём папку include. В ней создадим файл будущей функции и назовём его functions.php. Далее вставляем в него указанный ниже код.

Код PHP (файл functions.php)

function count_files($dir){ 
 $c=0; // количество файлов. Считаем с нуля
 $d=dir($dir); // 
 while($str=$d->read()){ 
  if($str{0}!='.'){ 
    if(is_dir($dir.'/'.$str)) $c+=count_files($dir.'/'.$str); 
    else $c++; 
  }; 
 } 
 $d->close(); // закрываем директорию
 return $c; 
}

Функция готова. В корневой директории (папке) можем уже создать рабочий файл с любым названием (в примере его назвал example.php), а в нём данную функцию будем подключать следующим образом.

Код PHP (файл example.php)

include_once "include/functions.php";
$count = count_files('images/photo'); // сколько фото в папке
echo "Файлов в папке ".$count;

В качестве результата работы функции можете увидеть строку вида

Файлов в папке: 52

Вычисляем количество файлов конкретного типа в папке PHP


Бывают и другие случаи, когда в большом количестве файлов директории нужно найти либо изображения с определённым расширением, либо файлы flash, либо, например, таблицы MS Excel. В приведенном ниже примере рассмотрен вариант с файлами с расширением .jpg

<?php
$path = 'images'; // название папки в той же директории, что и файл
$dir = opendir ("$path"); // открываем директорию
$i = 0; // создаём переменную для цикла
while (false !== ($file = readdir($dir))) {

// ниже указываем расширение файла. Вместо jpg выбираете нужный
      if (strpos($file, '.jpg',1) ) {
      $i++;
  }
}
echo "Файлов jpg в папке: ".$i;             
?>

Результат работы

Файлов jpg в папке: 41
Внимание! Если хотите указать больше одного типа файлов, например, нужны все изображения, а это jpg, gif, png и так далее, то замените строку

if (strpos($file, '.jpg',1) ) {

на

if(!is_dir($file) && (strpos($file, '.jpg')>0 || strpos($file, '.gif')>0 || strpos($file, '.png')>0) ) { 

Добавлять файлы с другими расширениями можно по аналогии.

Спасибо за внимание!
 



Похожие статьи


Комментарии к статье (vk.com)