Re: directory help
| From: | Joe Conway | Date: | Mon, 17 Jul 2000 04:39:32 +0000 |
| Subject: | Re: directory help | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-6869@lists.php.net to get a copy of this message | ||
>Hi,
> I need to recursivly traverse a directory path, anyone have any
>ideas on how to do this? I've tried many things, but none have been
>successful so far. Thanks!
>
>Jay
Here's a sample of what I usually use for this purpose:
<?
function recursedirs($currentdir,$level) {
$level++;
if ($level > 99) {
print "Too many levels!<br>\r\n";
exit;
}
if (substr(strrev($currentdir),0,1) != "/") {
$currentdir = $currentdir . "/";
};
$retval = chdir($currentdir);
$dhdl=opendir(".");
while ($filename = readdir($dhdl)) {
if(is_dir($filename)) {
$dlist[] = $filename;
}
if(is_file($filename)) {
$flist[] = $filename;
}
}
closedir($dhdl);
while (list ($key, $filename) = each ($flist)) {
print $level . ": " . $currentdir . $filename . "<br>\r\n";
};
while (list ($key, $filename) = each ($dlist)) {
if (!($filename == "." || $filename == "..")) {
recursedirs($currentdir . $filename,&$level);
};
};
}
$rootdir = "/home/httpd/html/dev";
$level = 0;
print "<html><body>\r\n";
recursedirs($rootdir,&$level);
print "</body></html>";
?>
$rootdir is where the traversal starts. The $level check prevents going too deep.
Hope this helps!
Joe