PHP listet alle Dateien im Verzeichnis auf [duplicate]
Lesezeit: 5 Minuten
Markus Lalor
Mögliches Duplikat:
Holen Sie sich die Hierarchie eines Verzeichnisses mit PHP
Abrufen der Namen aller Dateien in einem Verzeichnis mit PHP
Funktionen dazu habe ich gesehen listet alle Dateien in einem Verzeichnis auf Aber wie kann ich alle Dateien in auflisten? Unterverzeichnisse auchso dass es gibt ein Array zurück wie?
$files = files("foldername");
Damit $filesist etwas ähnliches
array("file.jpg", "blah.word", "name.fileext")
Matthew
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $filename)
{
// filter out "." and ".."
if ($filename->isDir()) continue;
echo "$filename\n";
}
+1 für SPL. Meiner Meinung nach ist es (schon seit einiger Zeit) an der Zeit, SPL anstelle dieser riesigen, langsamen prozeduralen Blöcke zu verwenden.
– Superultranova
16. Februar 2011 um 23:11 Uhr
Vollständiger Code (Ordnernamen ändern) – <?php$path = realpath('yourfolder/examplefolder');foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename){echo "$filename\n";}?>
– T. Todua
28. März 2013 um 10:58 Uhr
Oh wow … Vergleichen Sie dies mit dem Giganten oben. Tolle.
– Kloar
15. Mai 2013 um 12:51 Uhr
Es enthält . und .. spezielle Verzeichnisse. Hoffentlich können Sie sie herausfiltern, indem Sie a hinzufügen !$filename->isDir() Test (es gibt keine isDot()sehen SplFileInfo).
Ich denke du suchst glob-Funktion von php. Du kannst anrufen glob(**) um eine rekursive Dateiliste zu erhalten.
BEARBEITEN: Ich habe festgestellt, dass mein Glob nicht auf allen Systemen zuverlässig funktioniert, also sende ich diese viel hübschere Version der akzeptierten Antwort.
Ich musste das Lesen eines bestimmten Verzeichnisses implementieren, und basierend auf der Funktion von Chuck Vose habe ich diese Seite erstellt, um die Verzeichnisse zu lesen, die auf JQuery basieren:
<?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>