Listing de fichiers

January 27, 2007

Sait-on jamais, ça pourrai servir… Deux petites fonctions pour lister un répertoire, ou lister un répertoire récursivement

function ls($dir, $with_prefix = false) {
	if (substr($dir, -1) !== "/") $dir .= "/";

	unset($dirs);	$dirs  = array();
	unset($files);	$files = array();

	if (@is_readable($dir) and @is_dir($dir)) {
		if ($dh = opendir($dir)) {
			while (($file = readdir($dh)) !== false) {
				if (@is_readable($dir.$file)) {
					if (is_dir($dir.$file)) $dirs[] = ($with_prefix) ? $dir.$file : $file;
					else $files[] = ($with_prefix) ? $dir.$file : $file;
				}
			}
			closedir($dh);
		}
	}
	else return false;

	unset($dirs[0]);
	unset($dirs[1]);

	return array($dirs, $files);
}

function recursive_ls ($dir, $with_prefix = false) {
	if (substr($dir, -1) !== "/") $dir .= "/";

	if (($map_elements = ls ($dir, false)) !== false) {
		unset ($map); $map = array();

		if (!empty($map_elements[0])) {
			foreach ($map_elements[0] as $dirname) {
				$map[($with_prefix) ? $dir.$dirname : $dirname] = recursive_ls($dir.$dirname, $with_prefix);
			}
		}

		if ($with_prefix and !empty($map_elements[1])) {
			foreach ($map_elements[1] as $id => $value) {
				$map_elements[1][$id] = $dir . $value;
			}
		}

		return array_merge ($map, array_flip ($map_elements[1]));
	}

	return false;
}

Filed under: PHP

Leave a Comment

, (Hidden)

*

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RSS feed for comments on this post.


Calendar

February 2012
M T W T F S S
« Oct    
 12345
6789101112
13141516171819
20212223242526
272829  

Recent Posts