Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
РНР предоставляет набор функций для работы с каталогами, а именно — функции для создания, удаления и вывода оглавления каталогов. Для этого в РНР имеются функции opendir() и closedir (), аналогичные функциям fopen () и f close () для файлов. Функция opendir () имеет следующий синтаксис:
$dir_reference =opendir($dir_path)
где $dir_path представляет собой путь к открываемому каталогу. Функция opendir () выведет сообщение об ошибке, если указанный каталог не существует. При успешном завершении функция opendir () возвратит дескриптор каталога. Функция closedir() принимает единственный параметр - дескриптор каталога из вызова opendir ().
После открытия каталога, каждый его элемент можно прочитать с помощью функции readdir (): readdir($dir_reference), где $dir_reference — это значение, которое возвращает вызов функции opendir (). При успешном завершении эта функция возвращает строку, содержащую имя одного из файлов каталога, связанного с параметром $dir_reference. Каждый последующий вызов функции readdir () возвращает очередной файл каталога (в порядке, в котором они хранятся в файловой системе), пока весь список файлов не будет исчерпан. Если файлов в каталоге больше нет, или произошла какая-нибудь ошибка, readdir () вернет значение false. Использование функций $OpenDir=opendir($dir) и readdir($OpenDir). Выведем содержимое папки c:/windows
<?
$dir="c:/windows"; # папка, которую нужно прочитать
if($OpenDir=opendir($dir))
{
while(($file=readdir($OpenDir))!== false)
if($file!= "." && $file!= "..")
echo $file."<br>";
}
else echo "нет прав";
?>
Для создания каталога можно использовать функцию mkdir(name), для удаления – rmdir(), для изменения – chdir(). Чтение содержимого каталога:
<?php
$dr = @opendir(' /tmp/');
if(!$dr) {
echo "Ошибка при открытии каталога /tmp/!<BR>"; exit;
while (($filesf] = readdir($dr))!== false);
print_r(Sfiles);
?>
Поскольку функция readdir () возвращает каждый раз новое имя файла, то каждый файл заданного каталога в отдельности можно просмотреть только однажды. Для тех случаев, когда необходимо повторно просмотреть содержимое каталога, РНР предоставляет функцию, которая позволяет "перемотать" оглавление каталога в исходное состояние, которое он имел перед первым вызовом функции readdir (). Эта функция, называемая rewinddir (), имеет следующий синтаксис: rewinddir($dir_reference)
Хотя функция opendir () и другие родственные ей функции имеют свои преимущества, особенно полезным является альтернативный метод получения списка файлов, удовлетворяющих определенному критерию (или шаблону). Этой цели служит функцияglob ():
glob($filemask [, flags])
Здесь $filemask — это строка, содержащая шаблон поиска (например, *.txt), a flags представляет одну или несколько констант, перечисленных ниже. Значения flags: GL0B_MARK -Добавлять слэш к именам, которые являются каталогами; GL0B_N0S0RT -Не сортировать возвращаемый список файлов; GL0B_N0CHECK -Если нет файлов, совпадающих с шаблоном, вернуть шаблон вместо пустого массива; GL0B_0NLYDIR -Вернуть только каталоги, совпадающие с шаблоном.
Использование функции glob ():
<?php
Sdirectories = glob("/tmp/*", GL0B_0NLYDIR);
$complete = glob("/tmp/*");
Sfiles = array_diff(Sdirectories, $complete);
echo "Каталоги в /tmp/<BR>";
foreach(Sdirectories as $val) (echo "$val<BR>\n";)
echo "<BR><&aunbi в /tmp/<BR>";
foreach($files as Sval) (echo "$val<BR>\n";)
?>
Дата публикования: 2014-11-18; Прочитано: 332 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!