Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Работа с каталогами в РНР



РНР предоставляет набор функций для работы с каталогами, а именно — функции для создания, удаления и вывода оглавления каталогов. Для этого в РНР имеются функции 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...