Mögliches Duplizieren:
PHP Liste bestimmter Dateien in einem Verzeichnis
benutze PHP Scandir ($ dir) und erhalte nur Bilder!
Im Moment habe ich ein Verzeichnis und erhalte eine Liste von Dateien
$dir_f = "whatever/random/";
$files = scandir($dir_f);
Dadurch werden jedoch alle Dateien in einem Verzeichnis abgerufen. Wie würde ich nur Dateien mit einer bestimmten Erweiterung wie .ini auf effizienteste Weise wiederherstellen.
PHP bietet eine großartige Funktion, mit der Sie nur die Dateien erfassen können, die Sie benötigen. Es heißt glob()
glob - Findet nach einem Muster passende Pfadnamen
Hier ist ein Beispiel -
$files = array();
foreach (glob("/path/to/folder/*.txt") as $file) {
$files[] = $file;
}
Referenz -
Wenn Sie mehrere Erweiterungen suchen möchten, ist preg_grep()
eine Alternative zum Filtern:
$files = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
Obwohl glob
eine ähnliche zusätzliche Syntax hat. Dies ist vor allem dann sinnvoll, wenn Sie weitere Bedingungen haben, das Kennzeichen ~i
für Groß- und Kleinschreibung hinzufügen oder kombinierte Listen filtern können.
Mit der Funktion glob()
von PHP können Sie ein Muster angeben, nach dem gesucht werden soll.
Sie können versuchen, GlobIterator
zu verwenden.
$iterator = new \GlobIterator(__DIR__ . '/*.txt', FilesystemIterator::KEY_AS_FILENAME);
$array = iterator_to_array($iterator);
var_dump($array)
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
ich habe die Regex nicht getestet, aber so etwas:
if ($handle = opendir('/file/path')) {
while (false !== ($entry = readdir($handle))) {
if (preg_match('/\.txt$/', $entry)) {
echo "$entry\n";
}
}
closedir($handle);
}
versuche dies
//path to directory to scan
$directory = "../file/";
//get all image files with a .txt extension.
$file= glob($directory . "*.txt ");
//print each file name
foreach($file as $filew)
{
echo $filew;
$files[] = $filew; // to create the array
}