Est-il possible d'obtenir seulement des images avec des extensions jpeg
, png
, etc gif
tout en utilisantComment obtenir uniquement des images en utilisant scandir en PHP?
$dir = '/tmp';
$files1 = scandir($dir);
Est-il possible d'obtenir seulement des images avec des extensions jpeg
, png
, etc gif
tout en utilisantComment obtenir uniquement des images en utilisant scandir en PHP?
$dir = '/tmp';
$files1 = scandir($dir);
Vous pouvez utiliser glob
$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
Si vous avez besoin que ce soit insensible à la casse, vous pouvez utiliser un DirectoryIterator
en combinaison avec un RegexIterator
ou passer le résultat de scandir
-array_map
et d'utiliser un rappel qui filtre les extensions indésirables. Si vous utilisez strpos
, fnmatch
ou pathinfo
pour obtenir l'extension est à vous.
Vous pouvez rechercher le tableau résultant ensuite et jeter les fichiers qui ne correspondent pas à vos critères.
scandir
ne possède pas les fonctionnalités que vous recherchez.
Je voudrais boucle à travers les fichiers et regarder leurs extensions:
$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;
}
Voici un moyen simple d'obtenir que des images. Fonctionne avec PHP> = 5.2 version. La collection d'extensions est en minuscules, ce qui fait que l'extension de fichier en boucle en minuscules la rend insensible à la casse. J'espère que cela sera utile si vous voulez des extensions insensibles à la casse et à l'image uniquement.
Fonctionne parfaitement! –
La véritable question était d'utiliser scandir et les réponses se retrouvent dans glob. Il y a une énorme différence dans les deux où blob considérablement lourd. Le même filtrage peut être fait avec scandir en utilisant le code suivant:
$images = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
J'espère que cela aiderait quelqu'un.
Si vous souhaitez numériser un répertoire et retourner les noms de fichiers que vous pouvez utiliser ceci:
$fileNames = array_map(
function($filePath) {
return basename($filePath);
},
glob('./includes/*.{php}', GLOB_BRACE)
);
scandir()
renverra .
et ..
ainsi que les fichiers, de sorte que le code ci-dessus est plus propre si vous avez juste besoin noms de fichiers ou vous voulez faire d'autres choses avec les chemins de fichiers réels
merci, ça aide –
Cela ... ne plus utiliser 'scandir()'. Mais est par ailleurs correct. Donc, ne devrait-il pas être "non, avec' glob' "? – Borealid
@Bitealid nitpicker: D – Gordon
Maintenant, faites-le insensible à la casse. > :) – salathe