sobreescribir - PHP lista todos los archivos en el directorio
propiedades de un archivo php (5)
¿Entonces estás buscando una lista recursiva de directorios?
function directoryToArray($directory, $recursive) {
$array_items = array();
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($directory. "/" . $file)) {
if($recursive) {
$array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive));
}
$file = $directory . "/" . $file;
$array_items[] = preg_replace("//////si", "/", $file);
} else {
$file = $directory . "/" . $file;
$array_items[] = preg_replace("//////si", "/", $file);
}
}
}
closedir($handle);
}
return $array_items;
}
Posible duplicado:
Obtener la jerarquía de un directorio con PHP
Obtener los nombres de todos los archivos en un directorio con PHP
He visto funciones para enumerar todos los archivos en un directorio, pero ¿cómo puedo enumerar todos los archivos en subdirectorios también , por lo que devuelve una matriz como?
$files = files("foldername");
So $files
es algo similar a
array("file.jpg", "blah.word", "name.fileext")
Creo que estás buscando la función de glob de php . Puede llamar a glob(**)
para obtener una lista de archivos recursivos.
EDIT: me di cuenta de que mi glob no funciona de manera confiable en todos los sistemas, así que presento esta versión mucho más bonita de la respuesta aceptada.
function rglob($pattern=''*'', $flags = 0, $path='''')
{
$paths=glob($path.''*'', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
$files=glob($path.$pattern, $flags);
foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
return $files;
}
de: http://www.phpfreaks.com/forums/index.php?topic=286156.0
Necesitaba implementar la lectura de un directorio determinado, y confiando en la función de , creé esta página para leer los directorios que dependen de JQuery:
<?php
/**
* Recovers folder structure and files of a certain path
*
* @param string $path Folder where files are located
* @param string $pattern Filter by extension
* @param string $flags Flags to be passed to the glob
* @return array Folder structure
*/
function getFolderTree($path)
{
//Recovers files and directories
$paths = glob($path . "*", GLOB_MARK | GLOB_ONLYDIR | GLOB_NOSORT);
$files = glob($path . "*");
//Traverses the directories found
foreach ($paths as $key => $path)
{
//Create directory if exists
$directory = explode("//", $path);
unset($directory[count($directory) - 1]);
$directories[end($directory)] = getFolderTree($path);
//Verify if exists files
foreach ($files as $file)
{
if (strpos(substr($file, 2), ".") !== false)
$directories[] = substr($file, (strrpos($file, "//") + 1));
}
}
//Return the directories
if (isset($directories))
{
return $directories;
}
//Returns the last level of folder
else
{
$files2return = Array();
foreach ($files as $key => $file)
$files2return[] = substr($file, (strrpos($file, "//") + 1));
return $files2return;
}
}
/**
* Creates the HTML for the tree
*
* @param array $directory Array containing the folder structure
* @return string HTML
*/
function createTree($directory)
{
$html = "<ul>";
foreach($directory as $keyDirectory => $eachDirectory)
{
if(is_array($eachDirectory))
{
$html .= "<li class=''closed''><span class=''folder''>" . $keyDirectory . "</span>";
$html .= createTree($eachDirectory);
$html .= "</li>";
}
else
{
$html .= "<li><span class=''file''>" . $eachDirectory . "</span></li>";
}
}
$html .= "</ul>";
return $html;
}
//Create output
$directory = getFolderTree(''../videos'');
$htmlTree = createTree($directory["videos"]);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
<title>PHP Directories</title>
<link rel="stylesheet" href="http://jquery.bassistance.de/treeview/jquery.treeview.css" />
<link rel="stylesheet" href="http://jquery.bassistance.de/treeview/demo/screen.css" />
<script src="http://jquery.bassistance.de/treeview/lib/jquery.js" type="text/javascript"></script>
<script src="http://jquery.bassistance.de/treeview/lib/jquery.cookie.js" type="text/javascript"></script>
<script src="http://jquery.bassistance.de/treeview/jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript" src="http://jquery.bassistance.de/treeview/demo/demo.js"></script>
</head>
<body>
<div id="main">
<ul id="browser" class="filetree">
<?php echo $htmlTree;?>
</ul>
</div>
</body>
</html>
La estructura utilizada en el árbol con JQuery, el sitio fue tomado: http://jquery.bassistance.de/treeview/demo/
¡Espero que sea útil!
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(''.'')) as $filename)
{
// filter out "." and ".."
if ($filename->isDir()) continue;
echo "$filename/n";
}
Documentación de PHP:
function files($path,&$files = array())
{
$dir = opendir($path."/.");
while($item = readdir($dir))
if(is_file($sub = $path."/".$item))
$files[] = $item;else
if($item != "." and $item != "..")
files($sub,$files);
return($files);
}
print_r(files($_SERVER[''DOCUMENT_ROOT'']));