PHP: Функция glob () и rewinddir ()

Поскольку функция readdir () возвращает каждый раз новое имя файла, то каждый файл заданного каталога в отдельности можно просмотреть только однажды.

Для тех случаев, когда необходимо повторно просмотреть содержимое каталога, РНР предоставляет функцию, которая позволяет «перемотать» оглавление каталога в исходное состояние, которое он имел перед первым вызовом функции readdir (). Эта функция, называемая rewinddir (), имеет следующий синтаксис:

rewinddir($dir_reference)

где $dir_reference указывает на действительный дескриптор каталога, полученный из функции opendir (). Хотя функция opendir () и другие родственные ей функции имеют свои преимущества, особенно полезным является альтернативный метод получения списка файлов, удовлетворяющих определенному критерию (или шаблону). Этой цели служит функция, называемая glob (), которая имеет такой синтаксис:

glob($filemask [, flags])

где $filemask — это строка, содержащая шаблон поиска (например, *.txt) , a flags представляет одну или несколько констант, перечисленных ниже. При успешном завершении glob () возвращает отсортированный список файлов, удовлетворяющих заданному шаблону.

Константы для функции glob ()

GLOB_MARK Добавлять слэш к именам, которые являются каталогами.
GLOB_NOSORT He сортировать возвращаемый список файлов.
GLOB_NOCHECK Если нет файлов, совпадающих с шаблоном, вернуть шаблон вместо пустого массива.
GLOB_ONLYDIR Вернуть только каталоги, совпадающие с шаблоном.

В приведенном примере функция glob () используется для создания двух отдельных массивов, один из которых содержит список всех файлов каталога /tmp/, а другой — только список его подкаталогов.

Использование функции glob( )

<?php
$directories = glob ("/tmp/*", GLOB_ONLYDIR);
$complete = glob("/tmp/*");
$files = array_diff($directories, $complete);
echo "Каталоги в /tmp/<BR>";
foreach($directories as $val) {
echo "$val<BR>\n";
}
echo "<ВК>Файлы в /tmp/<BR>";
foreach($files as $val) {
echo "$val<BR>\n";
}
?>

Несмотря на то что существует константа функции glob (), которая позволяет получить список только файлов (то есть, не содержащий каталогов), в примере для этой цели применяется функция array_diff (), которая вычисляет разность между полным списком и списком, содержащим только каталоги (а, следовательно, получает список, содержащий только файлы).

Рейтинг
( Пока оценок нет )
Загрузка ...