note 49756 deleted from function.opendir by cmb
| From: | cmb@php.net | Date: | Tue, 11 Jun 2019 06:41:26 +0000 |
| Subject: | note 49756 deleted from function.opendir by cmb | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-211228@lists.php.net to get a copy of this message | ||
Note Submitter: hendrik dot wermer at gmx dot de
----
Here's another version of directory listing, since I had some problems using the examples
below. It will display the content of the current directory, sorted by directories and files.
You can also search subdirectories by setting $maxDepth > 0. There's a link to other
directories, so you can easily switch to the parent directory or to other directories in the current
directory.
Hope it helps!
<?php
// show directory content
function showDir($dir, $i, $maxDepth){
$i++;
if($checkDir = opendir($dir)){
$cDir = 0;
$cFile = 0;
// check all files in $dir, add to array listDir or listFile
while($file = readdir($checkDir)){
if($file != "." && $file != ".."){
if(is_dir($dir . "/" . $file)){
$listDir[$cDir] = $file;
$cDir++;
}
else{
$listFile[$cFile] = $file;
$cFile++;
}
}
}
// show directories
if(count($listDir) > 0){
sort($listDir);
for($j = 0; $j < count($listDir); $j++){
echo "
<tr>";
$spacer = "";
for($l = 0; $l < $i; $l++) $spacer .= " ";
// create link
$link = "<a href=\"" . $_SERVER["PHP_SELF"] . "?dir=" .
$dir . "/" . $listDir[$j] . "\">$listDir[$j]</a>";
echo "<td>" . $spacer . $link . "</td>
</tr>";
// list all subdirectories up to maxDepth
if($i < $maxDepth) showDir($dir . "/" . $listDir[$j], $i, $maxDepth);
}
}
// show files
if(count($listFile) > 0){
sort($listFile);
for($k = 0; $k < count($listFile); $k++){
$spacer = "";
for($l = 0; $l < $i; $l++) $spacer .= " ";
echo "
<tr>
<td>" . $spacer . $listFile[$k] . "</td>
</tr>";
}
}
closedir($checkDir);
}
}
if($_GET["dir"] == "" || !is_dir($_GET["dir"])) $dir = getcwd();
else $dir = $_GET["dir"];
// replace backslashes, not necessary, but better to look at
$dir = str_replace("\\", "/", $dir);
// show parent path
$pDir = pathinfo($dir);
$parentDir = $pDir["dirname"];
echo "<a href=\"" . $_SERVER["PHP_SELF"] .
"\"><h3>Home</h3></a>";
echo "Current directory: " . $dir;
echo "<a href=\"" . $_SERVER["PHP_SELF"] .
"?dir=$parentDir\"><h4>Parent directory: $parentDir</h4></a>";
// Display directory content
echo"<table border=1 cellspacing=0 cellpadding=2>
<tr><th align=left>File / Dir</th>";
// specifies the maxDepth of included subdirectories
// set maxDepth to 0 if u want to display the current directory
$maxDepth = 0;
showDir($dir, -1, $maxDepth);
?>