note 99113 added to function.opendir
| From: | cgray at metamedia dot us | Date: | Wed, 28 Jul 2010 14:36:00 +0000 |
| Subject: | note 99113 added to function.opendir | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-171187@lists.php.net to get a copy of this message | ||
To extend the examples already given into something more flexible and complete.
-c!
<?php
/**
* directory_list
* return an array containing optionally all files, only directiories or only files at a file system
path
* @author cgray The Metamedia Corporation www.metamedia.us
*
* @param $base_path string either absolute or relative path
* @param $filter_dir boolean Filter directories from result (ignored except in last directory if
$recursive is true)
* @param $filter_files boolean Filter files from result
* @param $exclude string Pipe delimited string of files to always ignore
* @param $recursive boolean Descend directory to the bottom?
* @return $result_list array Nested array or false
* @access public
* @license GPL v3
*/
function directory_list($directory_base_path, $filter_dir = false, $filter_files = false, $exclude =
".|..|.DS_Store|.svn", $recursive = true){
$directory_base_path = rtrim($directory_base_path, "/") . "/";
if (!is_dir($directory_base_path)){
error_log(__FUNCTION__ . "File at: $directory_base_path is not a directory.");
return false;
}
$result_list = array();
$exclude_array = explode("|", $exclude);
if (!$folder_handle = opendir($directory_base_path)) {
error_log(__FUNCTION__ . "Could not open directory at: $directory_base_path");
return false;
}else{
while(false !== ($filename = readdir($folder_handle))) {
if(!in_array($filename, $exclude_array)) {
if(is_dir($directory_base_path . $filename . "/")) {
if($recursive && strcmp($filename, ".")!=0 && strcmp($filename,
"..")!=0 ){ // prevent infinite recursion
error_log($directory_base_path . $filename . "/");
$result_list[$filename] = directory_list("$directory_base_path$filename/",
$filter_dir, $filter_files, $exclude, $recursive);
}elseif(!$filter_dir){
$result_list[] = $filename;
}
}elseif(!$filter_files){
$result_list[] = $filename;
}
}
}
closedir($folder_handle);
return $result_list;
}
}
?>
----
Server IP: 72.55.140.6
Probable Submitter: 173.162.17.233
----
Manual Page -- http://www.php.net/manual/en/function.opendir.php
Edit -- https://master.php.net/note/edit/99113
Del: integrated -- https://master.php.net/note/delete/99113/integrated
Del: useless -- https://master.php.net/note/delete/99113/useless
Del: bad code -- https://master.php.net/note/delete/99113/bad+code
Del: spam -- https://master.php.net/note/delete/99113/spam
Del: non-english -- https://master.php.net/note/delete/99113/non-english
Del: in docs -- https://master.php.net/note/delete/99113/in+docs
Del: other reasons-- https://master.php.net/note/delete/99113
Reject -- https://master.php.net/note/reject/99113
Search -- https://master.php.net/manage/user-notes.php