scan read inside from files php file filesystems directory

read - php scan files in folder



Obtener la jerarquía de un directorio con PHP (9)

Estoy tratando de encontrar todos los archivos y carpetas bajo un directorio específico

Por ejemplo, tengo / home / user / stuff

Quiero regresar

/home/user/stuff/folder1/image1.jpg /home/user/stuff/folder1/image2.jpg /home/user/stuff/folder2/subfolder1/image1.jpg /home/user/stuff/image1.jpg

¡Espero que tenga sentido!



foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)) as $f) { echo "$f /r/n"; }


function dir_contents_recursive($dir) { // open handler for the directory $iter = new DirectoryIterator($dir); foreach( $iter as $item ) { // make sure you don''t try to access the current dir or the parent if ($item != ''.'' && $item != ''..'') { if( $item->isDir() ) { // call the function on the folder dir_contents_recursive("$dir/$item"); } else { // print files echo $dir . "/" .$item->getFilename() . "<br>"; } } } }


$dir = "/home/user/stuff/"; $scan = scandir($dir); foreach ($scan as $output) { echo "$output" . "<br />"; }


La solución de trabajo (cambie con el nombre de su carpeta)

<?php $path = realpath(''yourfolder/subfolder''); ## or use like this ## $path = ''/home/user/stuff/folder1''; foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) { echo "$filename/n"; } ?>


listAllFiles( ''../cooktail/'' ); //send directory path to get the all files and floder of root dir function listAllFiles( $strDir ) { $dir = new DirectoryIterator( $strDir ); foreach( $dir as $fileinfo ) { if( $fileinfo == ''.'' || $fileinfo == ''..'' ) continue; if( $fileinfo->isDir() ) { listAllFiles( "$strDir/$fileinfo" ); } echo $fileinfo->getFilename() . "<br/>"; } }


Además de la solución RecursiveDirectoryIterator , también hay una solución glob() :

// do some extra filtering here, if necessary function recurse( $item ) { return is_dir( $item ) ? array_map( ''recurse'', glob( "$item/*" ) ) : $item; }; // array_walk_recursive: any key that holds an array will not be passed to the function. array_walk_recursive( ( recurse( ''home/user/stuff'' ) ), function( $item ) { print_r( $item ); } );


Puede usar el RecursiveDirectoryIterator o incluso la función glob. Alternativamente, la función scandir hará el trabajo.


Encuentra todos los archivos y carpetas bajo un directorio específico.

function getDirRecursive($dir, &$output = []) { $scandir = scandir($dir); foreach ($scandir as $a => $name) { $path = realpath($dir . DIRECTORY_SEPARATOR . $name); if (!is_dir($path)) { $output[] = $path; } else if ($name != "." && $name != "..") { getDirRecursive($path, $output); $output[] = $path; } } return $output; } var_dump(getDirRecursive(''/home/user/stuff''));

Salida (ejemplo):

array (size=4) 0 => string ''/home/user/stuff/folder1/image1.jpg'' (length=35) 1 => string ''/home/user/stuff/folder1/image2.jpg'' (length=35) 2 => string ''/home/user/stuff/folder2/subfolder1/image1.jpg'' (length=46) 3 => string ''/home/user/stuff/image1.jpg'' (length=27)