1 added
1 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Как и другие языки,<a>язык программирования PHP</a>тоже поддерживает работу с файлами. В этой статье поговорим, как открывать и закрывать файлы, выполнять редактирование, как построчно перезаписать и т. д.</p>
1
<p>Как и другие языки,<a>язык программирования PHP</a>тоже поддерживает работу с файлами. В этой статье поговорим, как открывать и закрывать файлы, выполнять редактирование, как построчно перезаписать и т. д.</p>
2
<h2>Открытие и закрытие файлов в PHP</h2>
2
<h2>Открытие и закрытие файлов в PHP</h2>
3
<p>Чтобы открыть файл в PHP, используют функцию fopen(). Она определяется следующим образом:</p>
3
<p>Чтобы открыть файл в PHP, используют функцию fopen(). Она определяется следующим образом:</p>
4
resource fopen(string $filename, string $mode)<p>Первый атрибут<strong>$filename</strong>служит для предоставления пути к файлу, а второй параметр обеспечивает его открытие. В зависимости от того, каковы цели открытия и какой тип файла, параметр может принимать несколько значений: - 'r': файл открывается лишь для чтения. Если файл отсутствует, возвращается false; - 'r+': файл открывается лишь для чтения, но есть возможность записи. Если файла нет, возвращается false; - 'w': файл открывается для записи. Когда такой файл уже есть, он перезаписывается, когда нет - создаётся; - 'w+': файл открывается для записи, но есть возможность чтения. Если файл существует, происходит перезапись, если нет - создание; - 'a': файл открывается для записи. При его существовании информация записывается в конец файла, при этом старые данные сохраняются. Если файла нет, происходит его создание; - 'a+': файл открывается и для чтения, и для записи. Когда файл существует, данные дописываются в конец файла. Если файл отсутствует, он создаётся.</p>
4
resource fopen(string $filename, string $mode)<p>Первый атрибут<strong>$filename</strong>служит для предоставления пути к файлу, а второй параметр обеспечивает его открытие. В зависимости от того, каковы цели открытия и какой тип файла, параметр может принимать несколько значений: - 'r': файл открывается лишь для чтения. Если файл отсутствует, возвращается false; - 'r+': файл открывается лишь для чтения, но есть возможность записи. Если файла нет, возвращается false; - 'w': файл открывается для записи. Когда такой файл уже есть, он перезаписывается, когда нет - создаётся; - 'w+': файл открывается для записи, но есть возможность чтения. Если файл существует, происходит перезапись, если нет - создание; - 'a': файл открывается для записи. При его существовании информация записывается в конец файла, при этом старые данные сохраняются. Если файла нет, происходит его создание; - 'a+': файл открывается и для чтения, и для записи. Когда файл существует, данные дописываются в конец файла. Если файл отсутствует, он создаётся.</p>
5
<p>Результат функции<strong>fopen</strong>-<strong>дескриптор файла</strong>. Этот дескриптор применяется для выполнения операций с файлом, а также для его закрытия.</p>
5
<p>Результат функции<strong>fopen</strong>-<strong>дескриптор файла</strong>. Этот дескриптор применяется для выполнения операций с файлом, а также для его закрытия.</p>
6
<p>После окончания работы файл закрываем функцией fclose(), принимающей в качестве параметра дескриптор файла. К примеру, следующий PHP-код откроет и закроет файл:</p>
6
<p>После окончания работы файл закрываем функцией fclose(), принимающей в качестве параметра дескриптор файла. К примеру, следующий PHP-код откроет и закроет файл:</p>
7
$fd = fopen("form.php", 'r') or die("файл открыть не удалось"); fclose($fd);<p>Если fopen не сможет открыть наш файл, конструкция<strong>or die</strong>позволит прекратить работу скрипта и вывести сообщение об ошибке.</p>
7
$fd = fopen("form.php", 'r') or die("файл открыть не удалось"); fclose($fd);<p>Если fopen не сможет открыть наш файл, конструкция<strong>or die</strong>позволит прекратить работу скрипта и вывести сообщение об ошибке.</p>
8
<h2>Чтение файла в PHP</h2>
8
<h2>Чтение файла в PHP</h2>
9
<p>Для чтения файла используют разные функции. Чтобы выполнить чтение построчно, подходит fgets() - функция, получающая дескриптор файла и возвращающая одну считанную строку:</p>
9
<p>Для чтения файла используют разные функции. Чтобы выполнить чтение построчно, подходит fgets() - функция, получающая дескриптор файла и возвращающая одну считанную строку:</p>
10
<?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fgets($fd)); echo $str; } fclose($fd); ?><p>При каждом вызове функции fgets() PHP будет помещать указатель в конце считанной строки. А чтобы отследить окончание файла, используют функцию feof(), возвращающую true при завершении файла. И пока мы не достигнем конца файла, мы можем применять функцию fgets().</p>
10
<?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fgets($fd)); echo $str; } fclose($fd); ?><p>При каждом вызове функции fgets() PHP будет помещать указатель в конце считанной строки. А чтобы отследить окончание файла, используют функцию feof(), возвращающую true при завершении файла. И пока мы не достигнем конца файла, мы можем применять функцию fgets().</p>
11
<h2>Полное чтение файла в PHP</h2>
11
<h2>Полное чтение файла в PHP</h2>
12
<p>Если хотите полностью прочитать файл, применяют file_get_contents():</p>
12
<p>Если хотите полностью прочитать файл, применяют file_get_contents():</p>
13
<?php $str = htmlentities(file_get_contents("form.php")); echo $str; ?><p>В данном случае нам не нужно явно открывать файл, получать дескриптор, а потом закрывать файл.</p>
13
<?php $str = htmlentities(file_get_contents("form.php")); echo $str; ?><p>В данном случае нам не нужно явно открывать файл, получать дескриптор, а потом закрывать файл.</p>
14
<h2>Поблочное считывание в PHP</h2>
14
<h2>Поблочное считывание в PHP</h2>
15
<p>Мы можем выполнить поблочное считывание, то есть считывать лишь определённое число байт из файла посредством fread():</p>
15
<p>Мы можем выполнить поблочное считывание, то есть считывать лишь определённое число байт из файла посредством fread():</p>
16
<?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fread($fd, 600)); echo $str; } fclose($fd); ?><p>Функция fread() принимает 2 атрибута: число считываемых байтов и дескриптор считываемого файла. Если считывается блок, указатель в файле помещается в конец блока. Кроме того, функция feof() позволяет отслеживать завершение файла.</p>
16
<?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fread($fd, 600)); echo $str; } fclose($fd); ?><p>Функция fread() принимает 2 атрибута: число считываемых байтов и дескриптор считываемого файла. Если считывается блок, указатель в файле помещается в конец блока. Кроме того, функция feof() позволяет отслеживать завершение файла.</p>
17
<h2>Запись файла в PHP</h2>
17
<h2>Запись файла в PHP</h2>
18
<p>Чтобы выполнить запись файла, используем функцию fwrite(), записывающую в файл строку:</p>
18
<p>Чтобы выполнить запись файла, используем функцию fwrite(), записывающую в файл строку:</p>
19
<?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fwrite($fd, $str); fclose($fd); ?><p>Аналогичным образом в случае записи работает и fputs():</p>
19
<?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fwrite($fd, $str); fclose($fd); ?><p>Аналогичным образом в случае записи работает и fputs():</p>
20
<?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fputs($fd, $str); fclose($fd); ?><h2>Работаем с указателем файла в PHP</h2>
20
<?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fputs($fd, $str); fclose($fd); ?><h2>Работаем с указателем файла в PHP</h2>
21
-
<p>Когда мы открываем файл для записи или чтения в режиме 'w', указатель помещается в начало. В случае считывания данных происходит перемещение указателя в конец блока считанных данных. Но мы можем вручную управлять указателем в нашем файле, устанавливая его в произвольное место. Чтобы это сделать, существует ф-я<strong>fseek</strong>, о��ределяемая следующим образом:</p>
21
+
<p>Когда мы открываем файл для записи или чтения в режиме 'w', указатель помещается в начало. В случае считывания данных происходит перемещение указателя в конец блока считанных данных. Но мы можем вручную управлять указателем в нашем файле, устанавливая его в произвольное место. Чтобы это сделать, существует ф-я<strong>fseek</strong>, определяемая следующим образом:</p>
22
int fseek (resource $handle , int $offset [, int $whence = SEEK_SET ] )<p>Атрибут<strong>$handle</strong>здесь представляет дескриптор файла, а<strong>$offset</strong>- смещение относительно начала файла в байтах, с которого начнётся запись/считывание. Третий параметр является необязательным и задаёт способ установки смещения. Кстати, он способен принимать несколько значений: -<strong>SEEK_SET</strong>: устанавливает смещение в offset байт относительно начала нашего файла. Это значение по умолчанию; -<strong>SEEK_END</strong>: устанавливает смещение в offset байт с конца нашего файла; -<strong>SEEK_CUR</strong>: устанавливает смещение в offset байт относительно начала текущей позиции в нашем файле.</p>
22
int fseek (resource $handle , int $offset [, int $whence = SEEK_SET ] )<p>Атрибут<strong>$handle</strong>здесь представляет дескриптор файла, а<strong>$offset</strong>- смещение относительно начала файла в байтах, с которого начнётся запись/считывание. Третий параметр является необязательным и задаёт способ установки смещения. Кстати, он способен принимать несколько значений: -<strong>SEEK_SET</strong>: устанавливает смещение в offset байт относительно начала нашего файла. Это значение по умолчанию; -<strong>SEEK_END</strong>: устанавливает смещение в offset байт с конца нашего файла; -<strong>SEEK_CUR</strong>: устанавливает смещение в offset байт относительно начала текущей позиции в нашем файле.</p>
23
<p>Если установка указателя удачна, fseek() возвратит 0, если нет, то -1. Пример:</p>
23
<p>Если установка указателя удачна, fseek() возвратит 0, если нет, то -1. Пример:</p>
24
$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);<p><em>Хотите знать больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</em></p>
24
$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);<p><em>Хотите знать больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</em></p>
25
25