Открыть меню    

Работа с файлами в PHP

работа с файлами в php

Получаем данные о файле

PHP

file_exists("test.txt")//Существует ли файл?

filesize("test.txt");//Узнаем размер файла

//Возвращается временная метка:
fileatime("test.txt");//Дата последнего обращения к файлу
//date("d M Y", $atime);

filemtime("test.txt");//Дата изменения файла
//date("d M Y", $mtime);

filectime("test.txt");//Дата создания файла(Windows)
//date("d M Y", $ctime);

Файлы: режимы работы

PHP

resource fopen(string filename, string mode)
// resource - возвращает указатель на файл в случае успешной работы, или FALSE в случае ошибки 
Режим работы Описание
r открыть файл только для чтения;
r+ открыть файл для чтения и записи;
w открыть файл только для записи. Если он существует, то текущее содержимое файла уничтожается. Текущая позиция устанавливается в начало;
w+ открыть файл для чтения и для записи. Если он существует, то текущее содержимое файла уничтожается. Текущая позиция устанавливается в начало;
а открыть файл для записи. Текущая позиция устанавливается в конец файла;
а+ открыть файл для чтения и записи. Текущая позиция устанавливается в конец файла;
b обрабатывать бинарный файл. Этот флаг необходим при работе с бинарными файлами в ОС Windows.

Открытие и закрытие файлов в PHP

PHP

$fi = fopen("test.html", "w+") or die("Ошибка");
//Примеры
$fi = fopen("http://www.you/test.html","r");
$fi = fopen("http://ftp.you/test.html", "r");
//Закрываем
fclose($fi)

Чтение файлов в PHP

PHP

//Читаем файл
fread(int fi, int length)
$str = fread($fi, 5);  // Читаем первые 5 символов
echo $str;
                        // так как курсор передвинулся
$str = fread($fi, 12);  // Читаем следующие 12 символов
echo $str;

fgets(int fi[, int length]) // Прочитать строку из файла

fgetss(int fi, int length [, string allowable]) // Прочитать строку из файла и отбросить HTML-теги
// string allowable - теги, которые необходимо оставить

fgetc(int fi) //Считывает символ из файла

Изначально Запись будет происходить в начало файла, путем перезаписывания существующих данных, если они есть. Поэтому, если вам нужно записать что-то в конец файла, нужно установить соответствующий режим чтения, например, a+.

Манипуляции с курсором в файлах PHP

PHP

int fseek(int fi, int offset [, int whence])   //Установка курсора
// int fi - указатель на файл
//offset — количество символов, на которые нужно передвинуться.
//whence:
//SEEK_SET — движение начинается с начала файла;
//SEEK_CUR — движение идет от текущей позиции;
//SEEK_END — движение идет от конца файла.

fseek($fi, -10, SEEK_END); //Читаем последние 10 знаков
$s = fread($fi, 10);

$pos = ftell($fi); //Узнаем текущую позицию

rewind($f)//сброс курсора

bool feof($f) //конец файла

Прямая работа с файлами (данными) в PHP

PHP

array file(string filename)  // Получаем содержимое файла в виде массива

//Еще один вариант прямой работы с данными

file_get_contents(string filename)  //Чтение (получаем весь файл одной строкой)

//Запись в файл (изначально перезаписывается)
file_put_contents(string filename, mixed data[,int flag]); //FILE_APPEND

// Запись в конец файла:
file_put_contents("test.txt", "данные", FILE_APPEND);

//Если записать массив,
$array = array("I", "live");
file_put_contents("test.txt",$array);
//то получим "Ilive"

Управление файлами в php

PHP

copy(string source, string destination); // Копирование файла

rename(str oldname, str newname); // Переименование файла

unlink(string filename); // Удаление файла

Загрузка файлов на сервер PHP

//Настрoйки PHP.ini
file_uploads (on|off) // разрешаем.запрещаем загрузку файлов
upload_tmp_dir        // временная папка для загружаемых файлов. по умолчания временная папка
upload_max_filesize (default = 2 Mb) // макс. размер загружаемого файла
post_max_size         // общий размер посылаемый формы (должен быть больше upload_max_filesize)
//Простая загрузка

HTML

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="51200">
    <input type="file" name="userfile">
    <input type="submit" value="Send">
</form>

Работаем с файлами на сервере

PHP

 //Принимаем данные
$tmp = $_FILES['userfile']['tmp_name'];
$name = $_FILES['userfile']['name'];

//Перемещаем файл
move_uploaded_file($tmp, name);

move_uploaded_file($tmp, "upload/".name); // перенаправляем файл в папку upload
// относительно текущего файла

//Что в массиве $_FILES
$_FILES['userfile']['name']     // имя файла, например, test.html
$_FILES['userfile']['tmp_name'] // временное имя файла (путь)
$_FILES['userfile']['size']     // размер файла
$_FILES['userfile']['type']     // тип файла
$_FILES['userfile']['error']    // 0 - ошибок нет, число - есть

Комментарии к статье