Gibt es eine Möglichkeit nur Bilder mit Erweiterungen jpeg
, png
, zu bekommen gif
etc währendWie bekomme ich nur Bilder mit Scandir in PHP?
$dir = '/tmp';
$files1 = scandir($dir);
Gibt es eine Möglichkeit nur Bilder mit Erweiterungen jpeg
, png
, zu bekommen gif
etc währendWie bekomme ich nur Bilder mit Scandir in PHP?
$dir = '/tmp';
$files1 = scandir($dir);
können Sie verwenden glob
$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
Wenn Sie diese Groß- und Kleinschreibung sein, können Sie eine DirectoryIterator
in Kombination mit einem verwenden könnte RegexIterator
oder das Ergebnis scandir
-array_map
passieren und einen Rückruf verwenden, die filtert alle unerwünschten Erweiterungen. Ob Sie strpos
, fnmatch
oder pathinfo
verwenden, um die Erweiterung zu erhalten, liegt bei Ihnen.
Verwendung Sie können die resultierende Anordnung danach suchen und Dateien verwerfen nicht Ihren Kriterien übereinstimmen.
scandir
hat nicht die Funktionalität, die Sie suchen.
würde ich Schleife durch die Dateien und schauen auf ihre Erweiterungen:
$dir = '/tmp';
$dh = opendir($dir);
while (false !== ($fileName = readdir($dh))) {
$ext = substr($fileName, strrpos($fileName, '.') + 1);
if(in_array($ext, array("jpg","jpeg","png","gif")))
$files1[] = $fileName;
}
Hier ist eine einfache Art und Weise ist nur Bilder zu bekommen. Funktioniert mit PHP> = 5.2 Version. Die Auflistung der Erweiterungen erfolgt in Kleinbuchstaben. Wenn Sie also die Dateierweiterung in der Schleife in Kleinbuchstaben umwandeln, wird die Groß-/Kleinschreibung ignoriert.
// image extensions
$extensions = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
// init result
$result = array();
// directory to scan
$directory = new DirectoryIterator('/dir/to/scan/');
// iterate
foreach ($directory as $fileinfo) {
// must be a file
if ($fileinfo->isFile()) {
// file extension
$extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
// check if extension match
if (in_array($extension, $extensions)) {
// add to result
$result[] = $fileinfo->getFilename();
}
}
}
// print result
print_r($result);
Ich hoffe, das ist nützlich, wenn Sie Groß- und Kleinschreibung und nur Bild-Erweiterungen möchten.
Funktioniert perfekt! –
Die eigentliche Frage war mit scandir und die Antworten enden in glob. Es gibt einen großen Unterschied in beiden, wo Blob erheblich schwerer ist. Die gleiche Filterung kann mit scandir unter Verwendung des folgenden Codes durchgeführt werden:
$images = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
Ich hoffe, das würde jemandem helfen.
Wenn Sie ein Verzeichnis durchsuchen möchten und das Rückdateinamen können nur Sie verwenden:
$fileNames = array_map(
function($filePath) {
return basename($filePath);
},
glob('./includes/*.{php}', GLOB_BRACE)
);
scandir()
kehrt .
und ..
sowie die Dateien, so dass der obige Code ist sauberer, wenn Sie gerade brauchen Dateinamen oder Sie möchten andere Dinge mit den tatsächlichen Dateipfaden tun
danke. Es hilft –
Das ... verwendet nicht mehr 'scandir()'. Aber ist sonst richtig. Also sollte das nicht "nein, mit' glob "sein? – Borealid
@Borealid nitpicker: D – Gordon
Jetzt machen Sie es case insensitive. > :) – salathe