Aus irgendeinem Grund bekomme ich immer eine '1' für die Dateinamen mit diesem Code:
if (is_dir($log_directory))
{
if ($handle = opendir($log_directory))
{
while($file = readdir($handle) !== FALSE)
{
$results_array[] = $file;
}
closedir($handle);
}
}
Wenn ich jedes Element in $ results_array wiedergebe, erhalte ich eine Reihe von Einsen, nicht den Namen der Datei. Wie erhalte ich den Namen der Dateien?
Antworten:
Kümmere dich nicht um open / readdir und benutze
glob
stattdessen:quelle
array_filter(..., 'is_file')
diesen Glob umschließen, da in der Frage nach Dateien gefragt wird.*.*
: Verwenden Sie*
stattdessen einfach .something.something
. Es ist besser zu verwendenarray_filter
undglob($log_directory.'/*')
.*.*
. Ein robusterer Ausdruck würde dies zu einer noch besseren Antwort machen.SPL- Stil:
Überprüfen Sie die DirectoryIterator- und SplFileInfo- Klassen auf die Liste der verfügbaren Methoden, die Sie verwenden können.
quelle
getPathname
: php.net/manual/en/splfileinfo.getpathname.phpSie müssen
$file = readdir($handle)
mit Klammern umgeben.Bitte schön:
quelle
Einfach benutzen
glob('*')
. Hier ist die Dokumentationquelle
Da die akzeptierte Antwort zwei wichtige Mängel aufweist, veröffentliche ich die verbesserte Antwort für diejenigen Neuankömmlinge, die nach einer richtigen Antwort suchen:
globe
Funktionsergebnisse mitis_file
ist erforderlich, da möglicherweise auch einige Verzeichnisse zurückgegeben werden..
Namen, daher ist das*/*
Muster im Allgemeinen schlecht.quelle
basename($file)
, um nur den Dateinamen anstelle des gesamten Pfads mit Dateinamen zu erhalten.Ich habe kleineren Code, um dies zu tun:
quelle
.php
auf jeder Datei entfernen .)Auf einigen Betriebssystemen erhalten Sie
.
..
und.DS_Store
: Nun, wir können sie nicht verwenden, also lassen Sie uns sie verstecken.Holen Sie sich zunächst alle Informationen zu den Dateien mit
scandir()
quelle
Dies liegt an der Präzision des Bedieners. Versuchen Sie es zu ändern in:
quelle
glob()
undFilesystemIterator
Beispiele:quelle
Sie könnten einfach die
scandir(Path)
Funktion ausprobieren . es ist schnell und einfach zu implementierenSyntax:
Diese Funktion gibt eine Liste von Dateien in ein Array zurück.
Um das Ergebnis anzuzeigen, können Sie versuchen
Oder
quelle
Eine andere Möglichkeit, Verzeichnisse und Dateien aufzulisten, wäre die Verwendung der
RecursiveTreeIterator
hier beantworteten: https://stackoverflow.com/a/37548504/2032235 .Eine ausführliche Erklärung
RecursiveIteratorIterator
und Iteratoren in PHP finden Sie hier: https://stackoverflow.com/a/12236744/2032235quelle
Hier ist ein erweitertes Beispiel für die Anzeige aller Dateien in einem Ordner
quelle
Ich benutze nur diesen Code:
quelle
Verwenden:
Quelle: http://chandreshrana.blogspot.com/2016/08/how-to-fetch-all-files-name-from-folder.html
quelle
Rekursiver Code zum Durchsuchen aller in einem Verzeichnis enthaltenen Dateien ('$ path' enthält den Pfad des Verzeichnisses):
quelle