Изучаем PHP 7. №17. Выводим список файлов в папке на экран.

Выводим список файлов в папке на экран.
Итак, загружать файлы на сервер мы уже умеем. Но как вывести список загруженных файлов на экран.
Сегодня мы рассмотрим несколько простых примеров и изучим новые функции php, которые помогут нам работать с файловой системой, а именно считывать ее содержимое.

Первый и самый простой способ — это функция glob(). Она позволяет выводить список всех фалов или по заданному условию. Подробнее читайте ТУТ.
Например, чтобы вывести список всех файлов, нам нужно прописать:

foreach (glob("*.*") as $filename) {
    echo "$filename размер " . filesize($filename) . "<br>";
}

Боле сложный, но гибкий вариант, это работа функциями:

opendir() — Открывает каталог
readdir() — Получает элемент каталога
closedir() — Закрывает каталог
is_dir() — проверяет, является ли элемент папкой

Вот как это работает:

$dir  = 'files//';
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while ($file = readdir($dh)) {
            echo "файл: $file <BR>";
        }
        closedir($dh);
    }
}

Но все то же может выполнять одна единственная функция.

scandir()Получает список файлов и каталогов, расположенных по указанному пути. Кроме того, ей можно передавать параметр сортировки: 0 — по возрастанию и 1 — по убыванию. Если этот параметр не указать, то по умолчанию будет 0.

$dir  = 'files/';
  $files = scandir($dir,1 );
  foreach ($files as $file){
    echo "<li><a href='$dir$file'>$file</a></li> <br>";
  }

Вы уже заметили, что появляются непонятные точки перед списком файлов, чтобы их убрать, используем такой вариант:

$dir  = 'files/';
//пропускаем точки
$skip = array('.', '..');
$files = scandir($dir);
foreach($files as $file) {
    if(!in_array($file, $skip))
        echo $file . '<br />';
}

И последним способом на сегодня будет dirВозвращает экземпляр класса Directory. ООП мы еще не рассматривали, но это не мешает попробовать и этот вариант.

$d = dir("files/");
echo "Дескриптор: " . $d->handle . "<br>";
echo "Путь: " . $d->path . "<br>";
while (false !== ($entry = $d->read())) {
   echo $entry."<br>";
}
$d->close();

Советую ознакомиться:
http://php.net/manual/ru/book.dir.php
http://ruseller.com/lessons.php?id=1575&rub=37

—————————-
http://m-o-n-e-t-a.ru/nikolay_2

Введи свой e-mail:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *