Как прочитать список файлов из папки с помощью PHP?

Я хочу прочитать список имен файлов в папке на веб-странице, используя php. есть ли простой скрипт для его достижения?


person Arun Annamalai    schedule 06.04.2009    source источник
comment
Да, вы можете прочитать его с помощью php, пожалуйста, прочитайте и используйте этот класс, я уверен, что это очень поможет. devbaba.com/2015/06/04/   -  person naCheex    schedule 05.06.2015


Ответы (9)


Самый простой и интересный способ (imo) - glob

foreach (glob("*.*") as $filename) {
    echo $filename."<br />";
}

Но стандартный способ — использовать функции каталога.

if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: .".$file."<br />";
        }
        closedir($dh);
    }
}

Существуют также методы SPL DirectoryIterator. Если ты заинтересован

person Ólafur Waage    schedule 06.04.2009
comment
Я не рекомендую Glob - никогда! Это очень медленно, особенно с большим количеством файлов. Я бы использовал один из них: FilesystemIterator, DirectoryIterator, RecursiveDirectoryIterator. - person JREAM; 10.04.2017
comment
$dir = getcwd(); получает текущий рабочий каталог. - person Avatar; 20.09.2018
comment
Какова цель !== false? - person RaminS; 19.02.2019

Есть такая функция scandir():

$dir = 'dir';
$files = scandir($dir, 0);
for($i = 2; $i < count($files); $i++)
    print $files[$i]."<br>";

Подробнее здесь, в руководстве по php.net

person bar    schedule 29.10.2014

Вот что я люблю делать:

$files = array_values(array_filter(scandir($path), function($file) use ($path) { 
    return !is_dir($path . '/' . $file);
}));

foreach($files as $file){
    echo $file;
}
person Bruno Calza    schedule 29.10.2014
comment
Требуется одно небольшое исправление: function($file) use ($path) { return !is_dir($path . '/' . $file); - person Borgboy; 28.06.2017

Если у вас проблемы с доступом к пути, возможно, вам нужно поставить это:

$root = $_SERVER['DOCUMENT_ROOT'];
$path = "/cv/"; 

// Open the folder
 $dir_handle = @opendir($root . $path) or die("Unable to open $path");
person MontDeska    schedule 29.04.2013


Отметить во многих папках:

Папка_1 и папка_2 — это названия папок, из которых мы должны выбрать файлы.

$format является обязательным форматом.

<?php
$arr = array("folder_1","folder_2");
$format  = ".csv";

for($x=0;$x<count($arr);$x++){
    $mm = $arr[$x];

    foreach (glob("$mm/*$format") as $filename) {
        echo "$filename size " . filesize($filename) . "<br>";
    }
}
?>
person Rishabh    schedule 11.01.2015

Вы можете использовать стандартные функции каталога

$dir = opendir('/tmp');
while ($file = readdir($dir)) {
    if ($file == '.' || $file == '..') {
        continue;
    }

    echo $file;
}
closedir($dir);
person Vlad Miller    schedule 20.01.2016

Существует также очень простой способ сделать это с помощью класса RecursiveTreeIterator, ответ здесь: https://stackoverflow.com/a/37548504/2032235

person jim_kastrin    schedule 31.05.2016

person    schedule
comment
Хотя этот код может дать ответ на вопрос, предоставление дополнительного контекста относительно того, как и/или почему он решает проблему, улучшит долгосрочную ценность ответа. - person radoh; 03.12.2016