note 77691 deleted from function.opendir by cmb
| From: | cmb@php.net | Date: | Tue, 11 Jun 2019 06:36:18 +0000 |
| Subject: | note 77691 deleted from function.opendir by cmb | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-211212@lists.php.net to get a copy of this message | ||
Note Submitter: arjan at wepwn dot nl
----
A simple function to count all the files and/or dirs inside a dir.
With optional extention when counting files.
Index of /
Some text file.txt
files/
num_files.phps
test.php
<?php
function num_files($dir, $type, $ext="")
{
// type 1: files only
// type 2: direcories only
// type 3: files and directories added
// type 4: files and directories separated with a space
if (!isset($dir) OR empty($dir))
{
echo '<b>Syntax error:</b> $dir value empty.';
exit;
}
$num_files = 0;
$num_dirs = 0;
switch($type)
{
case 1: // count only files, not dirs
if ($dir = @opendir($dir))
{
while (($file = readdir($dir)) !== false)
{
if(is_file($file) AND $file != "." AND $file != "..")
{
if (isset($ext) AND !empty($ext))
{
$extension = end(explode(".", $file));
if ($ext == $extension)
{
$num_files++;
}
}
else
{
$num_files++;
}
}
}
closedir($dir);
$total = $num_files;
}
break;
case 2: // count only dirs, not files
if ($dir = @opendir($dir))
{
while (($file = readdir($dir)) !== false)
{
if(is_dir($file) AND $file != "." AND $file != "..")
{
$num_dirs++;
}
}
closedir($dir);
$total = $num_dirs;
}
break;
case 3: // count files PLUS dirs in once variable
if ($dir = @opendir($dir))
{
while (($file = readdir($dir)) !== false)
{
if(is_dir($file) OR is_dir($file))
{
if ($file != "." AND $file != "..")
{
$num_files++;
}
}
}
closedir($dir);
$total = $num_files;
}
break;
case 4: // count files AND dirs separately
if ($dir = @opendir($dir))
{
while (($file = readdir($dir)) !== false)
{
if(is_file($file) AND $file != "." AND $file != "..")
{
$num_files++;
}
if(is_dir($file) AND $file != "." AND $file != "..")
{
$num_dirs++;
}
}
closedir($dir);
$total = $num_files." ".$num_dirs;
}
break;
default:
echo '<b>Syntax error:</b> $type value empty.';
break;
}
return $total;
}
echo num_files($_SERVER['DOCUMENT_ROOT'], 1, "php"). " file(s) met php
extention<br /> ";
echo num_files($_SERVER['DOCUMENT_ROOT'], 1). " file(s)<br />";
echo num_files($_SERVER['DOCUMENT_ROOT'], 2). " dir(s)<br />";
echo num_files($_SERVER['DOCUMENT_ROOT'], 3). " file(s) + dir(s)<br />";
$nummers = explode(" ", num_files($_SERVER['DOCUMENT_ROOT'], 4));
echo reset($nummers) ." file(s) en ". end($nummers) ." dir(s)";
?>
will output:
1 file(s) with php extention
3 file(s)
1 dir(s)
1 file(s) + dir(s)
3 file(s) en 1 dir(s)