/**
* This function open a defined directory and read all file into an array $file
* and all directory into an array $dirs. You can filter the search by
* regular expression. To hide hidden files/directories, set the last parameter as True.
*
* @param string $dir
* @param string $filter
* @param bool $hidden
* @return array
*
* @example list ( $directorys, $files ) = listing( '.', '/(\.jpg|\.png)$/i', True );
*/
function listing ( $dir, $filter = NULL, $hidden = False ) {
// remove dubble slashes
(string) $dir = preg_replace( '//{2,}/', '/', $dir );
if ( ( $dh = @/**/opendir( $dir ) ) !== False ) { while ( false !== ( $file = readdir( $dh ) ) ) { if ( $file != "." && $file != ".." ) { // Go next if $hidden True on hidden files.
if ( preg_match( '/^./', $file ) && $hidden === True ) continue;
if ( $filter && preg_match( $filter, $file ) ) $files[] = $file;
else { // Store files in Array $files[] and directorys in Array $dirs[].
if ( !$filter && is_file( $dir."/".$file ) ) $files[] = $file;
elseif ( !$filter && is_dir( $dir."/".$file ) ) $dirs[] = $file;
}
}
}
if ( @/**/closedir( $dh ) === False )
die("Can't close directory "".$dir.""!");} else die("Can't open directory "".$dir.""!");
// Sort the entry's naturaly.
if ( count($dirs) > 0 ) natcasesort($dirs);
if ( count($files) > 0 ) natcasesort($files);
return array( $dirs, $files );
}