Под работой с файлами в PHP подразумевается чтение из файла и запись в файл различной информации. Совершенно очевидно, что работать с файлами приходится много, поэтому любой PHP-программист обязан уметь считывать из файла и записывать в файл .
Под работой с файлами в PHP подразумевается чтение из файла и запись в файл различной информации. Совершенно очевидно, что работать с файлами приходится много, поэтому любой PHP-программист обязан уметь считывать из файла и записывать в файл.
Последовательность работы с файлами в PHP такая:
- Открыть файл.
- Выполнить необходимые действия.
- Закрыть файл.
Как видите, последовательность работы с файлами напоминает работу с файлами через обычный проводник. Только здесь вся работа выполняется автоматически самим PHP-скриптом.
Начнём с первого пункта - открытие файла. Файл открывается с помощью функции fopen(). Первый параметр - это путь к файлу, а второй параметр - модификатор. Давайте сразу разберём возможные модификаторы:
- a - открывает файл только для записи, причём указатель помещается в конец файла.
- a+ - то же самое, что и модификатор a, но также файл открывается ещё и для чтения.
- r - открывает файл только для чтения, а указатель устанавливается в начало файла.
- r+ - то же самое, что и модификатор r, но также файл открывается ещё и для записи.
- w - открывает файл только для записи, указатель устанавливает в начало файла и стирает всё содержимое файла.
- w+ - то же самое, что и модификатор w, только файл открывается также и для чтения.
Также различают два режима работы с файлами: бинарный (обозначается b) и текстовый (обозначается t). Если Вы работаете с обычным текстовым файлом, то выбирайте текстовый режим, а если, например, с изображением, то бинарный.
Это все основные модификаторы, которых Вам вполне хватит. Теперь давайте узнаем, как закрыть файл. Закрывается файл с помощью функции fclose().
Теперь перейдём к чтению файла с помощью функции fread(). И давайте, наконец-то, приведу пример:
<?php
$handle = fopen("files/a.txt", "rt");
$contents = '';
while (!feof($handle))
$contents .= fread($handle, 4096);
fclose($handle);
?>В данном примере мы сначала открываем файл для чтения в текстовом режиме (модификатор rt). Функция fopen() возвращает так называемый дескриптор, с помощью которого можно общаться с файлом, и записываем его в переменную handle. Затем мы в цикле while() до тех пор, пока не достигнут конец файл, считываем содержимое каждый раз по 4096 символов, которые записываем в переменную contents. После завершения процесса считывания - закрываем файл, вновь с помощью дескриптора файла.
Теперь перейдём к записи с помощью функции fwrite():
<?php
$handle = fopen("files/a.txt", "at");
$string = "This is text";
fwrite($handle, $string);
fclose($handle);
?>После запуска этого скрипта, в файле a.txt добавится строка "This is text".
Особо внимательные читатели обратили внимание на указатели, о которых я писал чуть выше. Указатель - это текущая позиция воображаемого "курсора" в файле. Именно с него и начинается работа с файлом. Изменить положение указателя можно с помощью функции fseek():
<?php
$handle = fopen("files/a.txt", "rt");
$contents = fread($handle, 3);
echo $contents."<br />";
fseek($handle, 0, SEEK_SET);
$contents = fread($handle, 3);
echo $contents."<br />";
?>Таким образом, мы сначала считываем 3 символа (в результате, текущее положение указателя сдвигается на 3 позиции). Затем мы устанавливаем указатель на начало файла. И вновь считываем 3 символа. Как Вы и догадались, мы два раза считали одно и тоже. То есть первый раз 3 символа, потом вернулись назад, и вновь считали 3 символа. Также если у функции fseek() заменить SEEK_SET на SEEK_CUR, то тогда второй параметр будет не устанавливать позицию указателя, а сдвигать относительно текущего местоположения. Советую даже попрактиковаться с указателями, потому что для понимания это не так просто. Также стоит попытаться записать что-нибудь в файл при позиции указателя, например, в самом начале файла. И обязательно объясните полученный результат.
И, напоследок, хочется привести ещё пару функций, которые позволяют работать с файлами на самом простом уровне: file_put_contens() и file_get_contents(). Функция file_put_contents() записывает в файл, а функция file_get_contents() считывает содержимое из файла. Эти функции очень просты в применении, но возможностей там уже меньше (хотя, как правило, они и не нужны):
<?php
file_put_contents("files/a.txt", "This is text 2");
echo file_get_contents("files/a.txt");
?>В данном скрипте мы сначала записали строку "This is text 2" в файл, а потом считываем полученное содержимое и выводим его. Как видите, трудно придумать более простой способ чтения из файла и запись в файл.
Вот и все основные моменты работы с файлами в PHP.
Спасибо за внимание!
