Обучение HTML, Excel, Word. Как сделать свой сайт бесплатно

Microsoft Office

Сайтостроение

HTML

Программинг

Компьютер

Графика

Разное

· Основы Word
· Основы Excel
· Основы VBA
· Основы OpenOffice
· Как сделать сайт
· Свой сайт от А до Я
· Оптимизация сайта
· Шаблоны для сайта
· Обзор CMS
· Основы HTML
· HTML-теги
· Основы CSS
· Основы PHP
· Основы JavaScript
· Софт для сайта
· Что внутри ПК
· ПК для чайников
· Все о BIOS
· Web-графика
· САПР: AutoCAD
· Статьи
· Форум
· SEO-новости
Главная страница Карта сайта
Учебник PHP
Основы SQL
  1. Введение
  2. Инструменты
  3. Первый шаг
  4. Структура языка
  5. Массивы
  6. Глобальные массивы
  7. Cookies
  8. Сессии
  9. Загрузка файлов
  10. Работа с файлами
  11. Работа с базами данных
  12. Работа в сети
  13. Отправка почты
  14. Безопасность
  15. Автоматизация
  16. Регулярные выражения в PHP
  17. Интеграция
 



Управление файлами и каталогами

Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

Под управлением файлами и каталогами в PHP подразумеваются такие операции как:

  • Создание/удаление
  • Копирование/перемещение
  • Переименование
  • Изменение аттрибутов
  • Чтение содержимого каталога

Копирование файлов производится с помощью функции copy(). Функция имеет всего 2 параметра - имя исходного файла и имя конечного файла. Функция возвращает TRUE, если копирование прошло успешно, и FALSE если произошла ошибка. Если конечный файл уже существует - он будет перезаписан и функция вернёт TRUE. При использовании copy() на Windows-платформе есть особенность: если скопировать файл нулевого размера, то файл успешно скопируется, но copy() вернёт FALSE.

Пример копирования файла:

<?php

    $source = 'readme.txt';
    $dest = 'readme_copy.txt';

    if(!copy($source, $dest)) {
        echo "Ошибка копирования файла $source...<br />\n";
    }
?>

Обратите внимание на конструкцию "<br />\n" в конце строки с ошибкой. Этот простой приём позволяет получать читаемый вид выводимого текста независимо от того куда текст выводится - в консоль отладчика или в браузер. Очень удобно на этапе отладки скрипта.

Более сложный процесс - перемещение файла. Для выполнения перемещения служит функция rename(). Как и предыдущая функция, rename() принимает всего 2 агрумента - старое и новое имя файла. Если пути старого и нового файлов одинаковые - файл просто переименуется, а если разные - будет перемещен но повому пути и переименован.

Пример переменования и перемещения файла:

<?php

    $number = 123;

    $source = 'readme.txt';
    $dest = "./backups/readme_$number.txt";

    if(!rename($source, $dest)) {
        echo "Ошибка перемещения файла $source...<br />\n";
    }
?>

В этом примере исходный файл readme.txt перемещается в подкаталог backups и переименовывается в readme_123.txt.

Удалить существующий файл можно с помощью функции unlink(). Файловая система Unix позволяет создавать жесткие ссылки на существуюие файлы. Ссылка похожа на ярлыки Windows, но в Unix нельзя удалить исходный файл, пока на него есть жесткие ссылки. Функция unlink() удаляет вашу ссылку на файл, а если ссылок больше нет - удаляет его.

<?php

    $file = "./backups/readme_123.txt";

    if(!unlink($file)) {
        echo "Ошибка удаления файла $file...<br />\n";
    }
?>

Для удаления каталогов служит другая функция - rmdir(). Она принимает единственный параметр - имя каталога, который нужно удалить. Удаляемый каталог должен быть пуст, иначе операция завершится с ошибкой. Если каталог успешно удалён - функция вернёт TRUE, в противном случае - FALSE.

<?php

    $directory = "./backups";

    if(!rmdir($directory)) {
        echo "Ошибка удаления каталога $directory...<br />\n";
    }
?>

Отдельной функции для создания файлов в PHP нет. Все функции, позволяющие создать файл, выполняют и ряд других операций, но об этом мы поговорим в следующем уроке.

Для создания каталога в PHP применяется функция mkdir(). Функция получает 1 параметр - имя создаваемого каталога. Если каталог успешно создан - функция вернёт TRUE, а при ошибке - FALSE.

<?php

    $directory = "./backups";

    if(!mkdir($directory)) {
        echo "Ошибка создания каталога $directory...<br />\n";
    }
?>

Дополнительные функции

В PHP есть ряд функций, существенно помогающих в работе. Список функций с кратким описанием приведён в таблице.
Функция Описание
string basename ( $path [, $ext] ) Извлекает из полного пути $path только имя файла. Если указано расширение $ext - оно обрезается.
<?php
    $full_path = "/full/path/to/myfile.txt";
    echo basename($full_path);
    // выводит "myfile.txt"
    echo basename($full_path, '.ext');
    // выводит "myfile"
?>
string dirname ( $path ) Извлекает из полного пути $path только путь к файлу (без имени и расширения)
<?php
    $full_path = "/full/path/to/myfile.txt";
    echo dirname($full_path);
    // выводит "/full/path/to"
?>
bool file_exists ( $filename ) Проверяет, существует ли файл или каталог $filename. Функция возвращает TRUE, когда файл или каталог существует и доступен.
<?php
    $filename = "/full/path/to/myfile.txt";
    if(file_exists($filename))
        echo 'Файл существует';
    else
        echo 'Файл не существует';
?>
int fileatime ( $filename ) Возвращает дату и время последнего обращения к файлу
int filectime ( $filename ) Возвращает дату и время последнего изменения файла
int filesize ( $filename ) Возвращает размер файла в байтах
string filetype ( $filename ) Возвращает тип файла. Может возвращать сделующие значения: fifo, char, dir, block, link, file, unknown.
bool is_dir ( $filename ) Проверяет, является ли $filename каталогом
bool is_file ( $filename ) Проверяет, является ли $filename файлом
bool is_uploaded_file ( $filename ) Проверяет, является ли $filename файлом, загруженным на сервер через веб-форму.
 
<?php
    $filename = "/full/path/to/myfile.txt";

if (file_exists($filename)) {
    echo "Последнее обращение: " .
            date("F d Y H:i:s.", fileatime($filename));
    echo "Последнее изменение: " .
            date("F d Y H:i:s.", filectime($filename));
    echo 'Размер: ' . filesize($filename) . ' байт';
    echo 'Тип объекта: ' . filetype($filename);

}
?>
mixed pathinfo ( $path [, $options] ) Возвращает строку или массив строк, содержащий части пути $path (имя каталога, имя файла, расширение)
<?php
    $filename = "/full/path/to/myfile.txt";
    $parts = pathinfo($filename);

    echo $parts['dirname'], "\n";
    echo $parts['basename'], "\n";
    echo $parts['extension'], "\n";
    echo $parts['filename'], "\n";

    // получим на выходе
    //  /full/path/to
    //  myfile.txt
    //  txt
    //  myfile
?>
string realpath ( $path ) Преобразует относительный путь к файлу в реальный полный путь на сервере. Все символические ссылки так же преобразуются в реальные имена каталогов и файлов.
<?php
    echo realpath('.') . "./myfile.txt";
    // получим
    // /full/path/to/myfile.txt
?>
string tempnam ( $dir, $prefix ) Создаёт в каталоге $dir временный файл со случайным именем, начинающимся с $prefix. Если параметры не заданы - будет создан временный файл в глобальном временном каталоге с полностью случайным именем. Созданный файл сохраняется после завершения работы скрипта и закрытия файла.
<?php
    $temp_name = tempnam ($dir, $prefix);
    echo $temp_name;
    unlink($temp_name);
?>
resource tmpfile ( void ) Создаёт в системном временном каталоге временный файл со случайным именем. Созданный файл удаляется немедленно после закрытия.
<?php
    $temp_file = tmpfile();
    fwrite($temp, "=пишем в файл...=");
    fseek($temp, 0);
    echo fread($temp, 1024);
    // выводится
    // =пишем в файл...=
    fclose($temp); // закрываем и удаляем файл
?>
Функции работы с данными внутри файла мы рассмотрим в следующем уроке.

В таблице приведены не все функции, используемые при работе с файлами. Полный список вы сможете найти в документации на официальном сайте.

Поиск файлов и каталогов

Для поиска файлов в каталогах сервера используется несколько функций: glob(), fnmatch() и функции работы с каталогами (opendir(), readdir(), rewinddir(), closedir()).

Функция opendir() открывает указанный каталог и устанавливает внутренний указатель на первый файл. Функция возвращает так называемый "handle" (читается "хэндл") или "указатель". Этот указатель передаётся всем последующим функциям при работе с данным каталогом.

Функция readdir() возвращает имя текущего файла в каталоге и перемещает внутренний указатель на следующий файл. Если последний файл уже был прочитан - функция вернёт FALSE. Функция rewinddir() сбрасывает внутренний указатель на первый файл в каталоге. Функция closedir() закрывает ранее открытый каталог и освобождает всеи используемые ресурсы.

Функция fnmatch($pattern, $filename) проверяет, соответствует ли имя файла $filename маске $pattern.

Пример поиска файла по шаблону:

<?php
    $dir = "./backups/";
    // проверяем, что $dir - каталог
    if (is_dir($dir)) {
        // открываем каталог
        if ($dh = opendir($dir)) {
            // читаем и выводим все элементы
            // от первого до последнего
            while (($file = readdir($dh)) !== false) {
                if(fnmatch('myfile_*.txt', $file))
                    echo 'Резервная копия: ';

                echo "$file : " .
                     filetype($dir . $file) . "<br />\n";

            }
            // закрываем каталог
            closedir($dh);
        }
    }
?>

Функция glob( $pattern ) возвращает массив файлов и каталогов, соответствующих маске $pattern. Если произошла ошибка или ничего не найдено - функция вернёт FALSE.

Пример:

<?php
    foreach (glob("./backups/*.txt") as $filename) {
        echo "$filename : " . filesize($filename) . " байт\n";
    }
?>

Рассмотренных в этом уроке функций достаточно для решения большинства практических задач. Необходимость использования средств управления файлами возникает практически в каждом среднем и крупном проекте. Чаще всего упомянутые функции используются для работы с файловыми архивами, фото- и видеоальбомами, а так же при загрузке пользователями файлов на сервер.

top




 




Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :)
При копировании материалов, размещенных на сайте, ссылка на первоисточник обязательна.
Если понравился этот сайт..

© 2005-2012
Юрий Кордык All Rights Reserved

 

E-mail:
admin@on-line-teaching.com