Атрибуты файла PHP. Работа с файлами PHP
Как и другие языки, язык программирования PHP тоже поддерживает работу с файлами. В этой статье поговорим, как открывать и закрывать файлы, выполнять редактирование, как построчно перезаписать и т. д.
Открытие и закрытие файлов в PHP
Чтобы открыть файл в PHP, используют функцию
resource fopen(string $filename, string $mode)
Первый атрибут $filename служит для предоставления пути к файлу, а второй параметр обеспечивает его открытие. В зависимости от того, каковы цели открытия и какой тип файла, параметр может принимать несколько значений: – 'r': файл открывается лишь для чтения. Если файл отсутствует, возвращается false; — 'r+': файл открывается лишь для чтения, но есть возможность записи. Если файла нет, возвращается false; — 'w': файл открывается для записи. Когда такой файл уже есть, он перезаписывается, когда нет — создаётся; — 'w+': файл открывается для записи, но есть возможность чтения. Если файл существует, происходит перезапись, если нет — создание; — 'a': файл открывается для записи. При его существовании информация записывается в конец файла, при этом старые данные сохраняются. Если файла нет, происходит его создание; — 'a+': файл открывается и для чтения, и для записи. Когда файл существует, данные дописываются в конец файла. Если файл отсутствует, он создаётся.
Результат функции fopen — дескриптор файла. Этот дескриптор применяется для выполнения операций с файлом, а также для его закрытия.
После окончания работы файл закрываем функцией
$fd = fopen("form.php", 'r') or die("файл открыть не удалось"); fclose($fd);
Если fopen не сможет открыть наш файл, конструкция or die позволит прекратить работу скрипта и вывести сообщение об ошибке.
Чтение файла в PHP
Для чтения файла используют разные функции. Чтобы выполнить чтение построчно, подходит
<?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fgets($fd)); echo $str; } fclose($fd); ?>
При каждом вызове функции
Полное чтение файла в PHP
Если хотите полностью прочитать файл, применяют
<?php $str = htmlentities(file_get_contents("form.php")); echo $str; ?>
В данном случае нам не нужно явно открывать файл, получать дескриптор, а потом закрывать файл.
Поблочное считывание в PHP
Мы можем выполнить поблочное считывание, то есть считывать лишь определённое число байт из файла посредством
<?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fread($fd, 600)); echo $str; } fclose($fd); ?>
Функция
Запись файла в PHP
Чтобы выполнить запись файла, используем функцию
<?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fwrite($fd, $str); fclose($fd); ?>
Аналогичным образом в случае записи работает и
<?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fputs($fd, $str); fclose($fd); ?>
Работаем с указателем файла в PHP
Когда мы открываем файл для записи или чтения в режиме 'w', указатель помещается в начало. В случае считывания данных происходит перемещение указателя в конец блока считанных данных. Но мы можем вручную управлять указателем в нашем файле, устанавливая его в произвольное место. Чтобы это сделать, существует ф-я fseek, определяемая следующим образом:
int fseek (resource $handle , int $offset [, int $whence = SEEK_SET ] )
Атрибут $handle здесь представляет дескриптор файла, а $offset — смещение относительно начала файла в байтах, с которого начнётся запись/считывание. Третий параметр является необязательным и задаёт способ установки смещения. Кстати, он способен принимать несколько значений: — SEEK_SET: устанавливает смещение в offset байт относительно начала нашего файла. Это значение по умолчанию; — SEEK_END: устанавливает смещение в offset байт с конца нашего файла; — SEEK_CUR: устанавливает смещение в offset байт относительно начала текущей позиции в нашем файле.
Если установка указателя удачна, fseek() возвратит 0, если нет, то -1. Пример:
$fd = fopen("hello.txt", 'w+') or die("файл открыть не удалось"); $str = "Всем привет!"; // строка для записи fwrite($fd, $str); // пишем строку в начало fseek($fd, 0); // помещаем в начало указатель файла fwrite($fd, "Ха-ха"); // пишем строку в начало fseek($fd, 0, SEEK_END); // помещаем указатель в конец fwrite($fd, $str); // пишем в конце ещё одну строку fclose($fd);
Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!