<?php count(array_filter(glob('dir/*'), 'is_file')); ?>
Но индексный файл, например, мне считать-то не нужно. Вот чего сейчас залепил: <?php $count = count(array_filter(glob('dir/*'), 'is_file')); if($count > 0) --$count; ?>
Но и это не всегда работает. Подскажите, пожалуйста, как исключить не нужные мне файлы? <?php
$dir = '/path/to/dir';
function countFilesInDir($pathToDir, array $exludes = []){
$filesCount = 0;
$directoryIterator = new DirectoryIterator($pathToDir);
foreach ($directoryIterator as $file){
if ($file->isDot()) continue;
/**
* @var SPLFileInfo $file
*/
if (in_array($file->getBasename(), $exludes)) continue;
if ($file->isFile()){
$filesCount++;
}
}
return $filesCount;
}
echo countFilesInDir($dir, ['index.php']);
public function getCountFiles($globMask, array $without = [])
{
if (!is_string($globMask)) {
throw new \InvalidArrayException(
sprintf('Argument "$globMask" must be "string", actual type: "%s"', gettype($globMask))
);
}
$filterCallback = function ($path) use ($without) {
return is_file($path) && !in_array($path, $without);
};
return count(array_filter(glob($globMask), $filterCallback));
}