una recorrer nombre mostrar listar listado leer directorio contar con carpeta cantidad buscar archivos archivo php

php - recorrer - Obtener los archivos dentro de un directorio



mostrar el listado de archivos de un directorio en php (3)

¿Cómo obtener los nombres de los archivos dentro de un directorio usando PHP?

No pude encontrar el comando relevante usando Google, por lo que espero que esta pregunta ayude a quienes preguntan por líneas similares.


¡La estuvo bien, pero ahora está desactualizada!
Considere las formas oficiales debajo de obtener los archivos dentro de un directorio.

FilesystemIterator

FilesystemIterator tiene muchas características nuevas en comparación con su ancestro DirectoryIterator como por ejemplo la posibilidad de evitar la declaración if($file->isDot()) continue; . Consulte también la pregunta Diferencia entre DirectoryIterator y FilesystemIterator .

$it = new FilesystemIterator(__DIR__); foreach ($it as $fileinfo) { echo $fileinfo->getFilename() , PHP_EOL; }

RecursiveDirectoryIterator

Este fragmento enumera archivos PHP en todos los subdirectorios.

$dir = new RecursiveDirectoryIterator(__DIR__); $flat = new RecursiveIteratorIterator($dir); $files = new RegexIterator($flat, ''//.php$/i''); foreach($files as $file) { echo $file , PHP_EOL; }

Ver también la respuesta de Wrikken .


La vieja manera sería:

<?php $path = realpath(''.''); // put in your path here $dir_handle = @opendir($path) or die("Unable to open $path"); $directories = array(); while ($file = readdir($dir_handle)) $directories[] = $file; closedir($dir_handle); ?>

Como ya se mencionó, el iterador de directorio podría ser la mejor manera para PHP 5.


Hay muchas maneras. La forma más antigua es scandir pero DirectoryIterator es probablemente la mejor manera.

También hay readdir (para ser usado con opendir ) y glob .

Aquí hay algunos ejemplos sobre cómo usar cada uno para imprimir todos los archivos en el directorio actual:

Uso de DirectoryIterator : (recomendado)

foreach (new DirectoryIterator(''.'') as $file) { if($file->isDot()) continue; print $file->getFilename() . ''<br>''; }

uso scandir :

$files = scandir(''.''); foreach($files as $file) { if($file == ''.'' || $file == ''..'') continue; print $file . ''<br>''; }

opendir y readdir :

if ($handle = opendir(''.'')) { while (false !== ($file = readdir($handle))) { if($file == ''.'' || $file == ''..'') continue; print $file . ''<br>''; } closedir($handle); }

uso de glob :

foreach (glob("*") as $file) { if($file == ''.'' || $file == ''..'') continue; print $file . ''<br>''; }

Como se mencionó en los comentarios, glob es bueno porque el asterisco que utilicé allí se puede usar para hacer coincidencias en los archivos, por lo que glob(''*.txt'') obtendría todos los archivos de texto en la carpeta y glob(''image_*'') obtendría todos los archivos que comienzan con image_