Определить количество файлов php

Snip Code

Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
$str = iconv_strlen($str,’UTF-8′);
Я так считаю!
13-12-2013 в 12:59:38 ID# 454 посмотреть.

SnipCode.ru

Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
13-12-2013 в 13:02:55 ID# 455 посмотреть.

Сергей

поторопился, так надо в конце, пардон.
return $v[‘pass’];
>
return FALSE;
>

Сергей

Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.

function search($array,$login)
foreach ($array as $k=>$v)
if($v[‘login’] == $login) return $v[‘pass’];
>
>
return FALSE;
Так, на минутку.
Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

Пабло

Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
11-11-2013 в 17:04:39 ID# 207 посмотреть.

SnipCode.ru

ну. вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
11-11-2013 в 17:07:06 ID# 208 посмотреть.

Пабло

Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?

Читайте также:  Скрыть class в css

Мне нужна система рейтинга точно такая же как у вас=)
11-11-2013 в 17:10:56 ID# 209 посмотреть.

KorniloFF

Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
Вот код, обрезающий до последней точки:

Виктор

Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
Спасибо!
30-09-2013 в 20:34:07 ID# 204 посмотреть.

  • php.ru
  • query — 93, time — 0.22

Проект запущен 03.07.2012.
По всем вопросам: snipcode@snipcode.ru © SnipCode

Источник

Как подсчитать количество файлов в папке (директории) 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!='.') <
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;

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

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

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

 $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(!is_dir($file) && (strpos($file, '.jpg')>0 || strpos($file, '.gif')>0 || strpos($file, '.png')>0) ) 

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

Источник

Как посчитать количество файлов в папке в php?

Я хочу, чтобы пользователи могли загружать некоторые файлы (изображения) в свои собственные папки. Но это должно быть возможно только в том случае, если эти папки содержат менее пяти изображений. Если уже есть 5 изображений, скрипт должен сообщить пользователю, что его папка заполнена. Итак, мне интересно, есть ли в php функция, которая подсчитывает количество файлов в папке. Или любым другим способом в PHP сделать это? Заранее спасибо.

6 ответов

Использовать FilesystemIterator как показано:

$dir = "/path/to/folder"; $fi = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS); $fileCount = iterator_count($fi); 

Нет ничего проще: используйте opendir() а также readdir() просто как следовать:

Очевидно, это не учитывает расширения файлов.

Вы также можете использовать:

Мне действительно нравится dops answer, но он возвращает количество файлов, каталогов и символических ссылок, что может и не быть целью. Если вы просто хотите подсчитать количество локальных файлов в каталоге, вы можете использовать:

$path = "/path/to/folder"; $fs = new FilesystemIterator($path); foreach($fs as $file) < $file->isFile() ? ++$filecount : $filecount; > 

Вы можете просто позволить PHP найти файлы для вас. а затем посчитать их.

$count = count(glob("$path_to_user_dir/*")); 

Эта небольшая функция здесь является модификацией некоторого кода, который я нашел недавно, который также будет подсчитывать все подпапки и все в этих папках:

 " . $entry . "
"; countStuff($entry, $fileCount, $folderCount); $folderCount++; > else < echo "File =>" . $entry . "
"; $fileCount++; > > > closedir($handle); > > echo "
==============
"; echo "Total Folder Count : " . $folderCount . "
"; echo "Total File Count : " . $fileCount; ?>

ПРИМЕЧАНИЕ: я также опубликую исходный код, который будет просто подсчитывать файлы и папки родительского каталога, а не дочерние подпапки ниже:

if ($handle = opendir('.')) < while (false !== ($entry = readdir($handle))) < if ($entry != "." && $entry != "..") < if (is_dir($entry)) < echo "Folder =>" . $entry . "
"; countStuff($entry, $fileCount, $folderCount); $folderCount++; > else < echo "File =>" . $entry . "
"; $fileCount++; > > > echo "
==============
"; echo "Total Folder Count : " . $folderCount . "
"; echo "Total File Count : " . $fileCount; closedir($handle); >

Источник

Возвращает общее количество файлов в папке с помощью PHP

Есть ли лучший / более простой способ найти количество изображений в каталоге и вывести их в переменную?

function dirCount($dir) < $x = 0; while (($file = readdir($dir)) !== false) < if (isImage($file)) > return $x; > 

Это похоже на такой длинный способ сделать это, нет ли более простого способа?

Примечание. Функция isImage () возвращает true, если файл является изображением.

Solutions Collecting From Web of "Возвращает общее количество файлов в папке с помощью PHP"

Проверьте стандартную библиотеку PHP (она же SPL) для DirectoryIterator:

$dir = new DirectoryIterator('/path/to/dir'); foreach($dir as $file )

(FYI есть недокументированная функция, называемая iterator_count (), но, вероятно, лучше не полагаться на нее, пока я себе представляю. И вам нужно будет отфильтровать невидимые вещи, как и все равно.)

Это даст вам счет того, что находится в вашем каталоге. Я оставлю часть о подсчете только изображений для вас, поскольку я собираюсь fallll aaasssllleeelppppppzzzzzzzzzzzzz.

iterator_count(new DirectoryIterator('path/to/dir/')); 
$files = scandir($dir); $x = count($files); echo $x; 

но он также учитывает. а также ..

вы можете использовать glob …

$count = 0; foreach (glob("*.*") as $file)

или, я не уверен, насколько это подходит вашим потребностям, но вы можете это сделать:

это ваш лучший результат, но бит будет работать, только если вы GLOB_BRACE флаг GLOB_BRACE в конец:

$count = count(glob("*.", GLOB_BRACE)); 

Вы также можете использовать SPL для фильтрации содержимого DirectoryIterator с isImage функции isImage , расширяя абстрактный класс FilterIterator .

class ImageIterator extends FilterIterator < public function __construct($path) < parent::__construct(new DirectoryIterator($path)); >public function accept() < return isImage($this->getInnerIterator()); > > 

Затем вы можете использовать iterator_count (или реализовать интерфейс Countable и использовать функцию count ), чтобы определить количество изображений. Например:

$images = new ImageIterator('/path/to/images'); printf('Found %d images!', iterator_count($images)); 

Используя этот подход, в зависимости от того, как вам нужно использовать этот код, может возникнуть смысл переместить функцию ImageIterator класс ImageIterator чтобы все было аккуратно завершено в одном месте.

Я использую следующее, чтобы получить счетчик для всех типов файлов в одном каталоге в Laravel

 $dir = public_path('img/'); $files = glob($dir . '*.*'); if ( $files !== false ) < $total_count = count( $files ); return $totalCount; >else

Ваш ответ кажется таким же простым, как вы можете его получить. Я не могу придумать более короткий путь к нему в PHP или Perl.

Вы можете использовать команду system / exec с использованием ls, wc и grep, если вы используете Linux в зависимости от того, насколько сложна isImage ().

Несмотря на это, я думаю, что у вас достаточно. Вам нужно только написать функцию один раз.

Я использую это, чтобы возвращать количество ВСЕХ файлов в каталоге, кроме. а также ..

return count(glob("/path/to/file/[!\.]*")); 

Вот хороший список фильтров glob для целей сопоставления файлов.

$nfiles = glob("/path/to/file/[!\\.]*"); if ($nfiles !== FALSE) < return count($nfiles); >else

Источник

Как посчитать количество файлов в папке в php?

Я хочу, чтобы пользователи могли загружать некоторые файлы (изображения) в свои собственные папки. Но это должно быть возможно только в том случае, если эти папки содержат менее пяти изображений. Если уже есть 5 картин, скрипт должен сообщить пользователю, что его/ее папка заполнена. Итак, интересно, есть ли в php функция, которая подсчитывает количество файлов в папке. Или любой другой способ в php сделать это? Заранее спасибо.

6 ответов

Используйте FilesystemIterator как показано:

$dir = "/path/to/folder"; $fi = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS); $fileCount = iterator_count($fi); 

@DonCallisto Я думаю, что видел ответ на stackoverflow на другой похожий вопрос, я использовал его с тех пор, и он работает хорошо

Ничего проще: используйте opendir() и readdir() как readdir() :

Очевидно, что это не учитывает расширения файлов.

Вы также можете использовать:

Вы могли бы просто позволить PHP найти файлы для вас. затем посчитайте их.

$count = count(glob("$path_to_user_dir/*")); 

@Pierre: Это очень похоже, да. На самом деле я собирался включить некоторую информацию о том, как найти только файлы изображений, пока я не увидел это. Что ж, и до того, как я понял, что в * nix глобализация по расширению станет ненадежной. (Чувствителен к регистру операционки и / или файловые системы не подобрать whatever.JPG , к примеру, вы должны включать в себя каждую комбинацию случая, или , по крайней мере, общие.)

Мне очень нравится ответ dops, но он вернет количество файлов, каталогов и символических ссылок, что может и не быть целью. Если вам просто нужно подсчитать количество локальных файлов в каталоге, вы можете использовать:

$path = "/path/to/folder"; $fs = new FilesystemIterator($path); foreach($fs as $file) < $file->isFile() ? ++$filecount : $filecount; > 

Эта небольшая функция здесь является модификацией некоторого кода, который я нашел некоторое время назад, который также будет считать все вспомогательные папки и все в этих папках:

 " . $entry . "
"; countStuff($entry, $fileCount, $folderCount); $folderCount++; > else < echo "File =>" . $entry . "
"; $fileCount++; > > > closedir($handle); > > echo "
==============
"; echo "Total Folder Count : " . $folderCount . "
"; echo "Total File Count : " . $fileCount; ?>

ПРИМЕЧАНИЕ. Я также отправлю исходный код, который будет просто подсчитывать файлы и папки родительского каталога, а не дочерние подпапки ниже:

if ($handle = opendir('.')) < while (false !== ($entry = readdir($handle))) < if ($entry != "." && $entry != "..") < if (is_dir($entry)) < echo "Folder =>" . $entry . "
"; countStuff($entry, $fileCount, $folderCount); $folderCount++; > else < echo "File =>" . $entry . "
"; $fileCount++; > > > echo "
==============
"; echo "Total Folder Count : " . $folderCount . "
"; echo "Total File Count : " . $fileCount; closedir($handle); >

Источник

Оцените статью