nombre - Script PHP para recorrer todos los archivos en un directorio?
mostrar archivos de una carpeta en html (7)
Puede usar el DirectoryIterator . Ejemplo de php Manual:
<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
var_dump($fileinfo->getFilename());
}
}
?>
Estoy buscando un script PHP que recorra todos los archivos de un directorio para que pueda hacer cosas con el nombre del archivo, como el formato, imprimir o agregarlo a un enlace. Me gustaría poder ordenar los archivos por nombre, tipo o fecha de creación / agregado / modificación. (Piense en el "índice" de directorio de lujo). También me gustaría poder agregar exclusiones a la lista de archivos, como el script en sí u otros archivos del "sistema". (Como los .
Y ..
"directorios".)
Siendo que me gustaría poder modificar el guión, estoy más interesado en ver los documentos de PHP y aprender a escribir uno yo mismo. Dicho esto, si hay guiones, tutoriales y otras cosas, por favor avíseme.
Puede usar este código para recorrer un directorio recusivamente :
$path = "/home/myhome";
$rdi = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
foreach (new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::SELF_FIRST) as $file => $info) {
echo $file."/n";
}
Si no tiene acceso a la clase DirectoryIterator, intente esto:
<?php
$path = "/path/to/files";
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if (''.'' === $file) continue;
if (''..'' === $file) continue;
// do something with the file
}
closedir($handle);
}
?>
También puede hacer uso de FilesystemIterator
. Requiere incluso menos código que DirectoryIterator
, y lo elimina automáticamente .
y ..
$fileSystemIterator = new FilesystemIterator(''images'');
$entries = array();
foreach ($fileSystemIterator as $fileInfo){
$entries[] = $fileInfo->getFilename();
}
var_dump($entries);
//OUTPUT
object(FilesystemIterator)[1]
array (size=14)
0 => string ''aa[1].jpg'' (length=9)
1 => string ''Chrysanthemum.jpg'' (length=17)
2 => string ''Desert.jpg'' (length=10)
3 => string ''giphy_billclinton_sad.gif'' (length=25)
4 => string ''giphy_shut_your.gif'' (length=19)
5 => string ''Hydrangeas.jpg'' (length=14)
6 => string ''Jellyfish.jpg'' (length=13)
7 => string ''Koala.jpg'' (length=9)
8 => string ''Lighthouse.jpg'' (length=14)
9 => string ''Penguins.jpg'' (length=12)
10 => string ''pnggrad16rgb.png'' (length=16)
11 => string ''pnggrad16rgba.png'' (length=17)
12 => string ''pnggradHDrgba.png'' (length=17)
13 => string ''Tulips.jpg'' (length=10)
Enlace: http://php.net/manual/en/class.filesystemiterator.php
Use la función scandir()
:
<?php
$directory = ''/path/to/files'';
if (! is_dir($directory)) {
exit(''Invalid diretory path'');
}
$files = array();
foreach (scandir($directory) as $file) {
if (''.'' === $file) continue;
if (''..'' === $file) continue;
$files[] = $file;
}
var_dump($files);
?>
glob() tiene disposiciones para la clasificación y la coincidencia de patrones. Dado que el valor de retorno es una matriz, puede hacer casi todo lo demás que necesita.
$files = glob(''folder/*.{jpg,png,gif}'', GLOB_BRACE);
foreach($files as $file)
{
//do your work here
}