HTML Diff
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 &lt;?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fgets($fd)); echo $str; } fclose($fd); ?&gt;<p>При каждом вызове функции fgets() PHP будет помещать указатель в конце считанной строки. А чтобы отследить окончание файла, используют функцию feof(), возвращающую true при завершении файла. И пока мы не достигнем конца файла, мы можем применять функцию fgets().</p>
10 &lt;?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fgets($fd)); echo $str; } fclose($fd); ?&gt;<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 &lt;?php $str = htmlentities(file_get_contents("form.php")); echo $str; ?&gt;<p>В данном случае нам не нужно явно открывать файл, получать дескриптор, а потом закрывать файл.</p>
13 &lt;?php $str = htmlentities(file_get_contents("form.php")); echo $str; ?&gt;<p>В данном случае нам не нужно явно открывать файл, получать дескриптор, а потом закрывать файл.</p>
14 <h2>Поблочное считывание в PHP</h2>
14 <h2>Поблочное считывание в PHP</h2>
15 <p>Мы можем выполнить поблочное считывание, то есть считывать лишь определённое число байт из файла посредством fread():</p>
15 <p>Мы можем выполнить поблочное считывание, то есть считывать лишь определённое число байт из файла посредством fread():</p>
16 &lt;?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fread($fd, 600)); echo $str; } fclose($fd); ?&gt;<p>Функция fread() принимает 2 атрибута: число считываемых байтов и дескриптор считываемого файла. Если считывается блок, указатель в файле помещается в конец блока. Кроме того, функция feof() позволяет отслеживать завершение файла.</p>
16 &lt;?php $fd = fopen("form.php", 'r') or die("файл открыть не удалось"); while(!feof($fd)) { $str = htmlentities(fread($fd, 600)); echo $str; } fclose($fd); ?&gt;<p>Функция fread() принимает 2 атрибута: число считываемых байтов и дескриптор считываемого файла. Если считывается блок, указатель в файле помещается в конец блока. Кроме того, функция feof() позволяет отслеживать завершение файла.</p>
17 <h2>Запись файла в PHP</h2>
17 <h2>Запись файла в PHP</h2>
18 <p>Чтобы выполнить запись файла, используем функцию fwrite(), записывающую в файл строку:</p>
18 <p>Чтобы выполнить запись файла, используем функцию fwrite(), записывающую в файл строку:</p>
19 &lt;?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fwrite($fd, $str); fclose($fd); ?&gt;<p>Аналогичным образом в случае записи работает и fputs():</p>
19 &lt;?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fwrite($fd, $str); fclose($fd); ?&gt;<p>Аналогичным образом в случае записи работает и fputs():</p>
20 &lt;?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fputs($fd, $str); fclose($fd); ?&gt;<h2>Работаем с указателем файла в PHP</h2>
20 &lt;?php $fd = fopen("hello.txt", 'w') or die("не удалось создать файл"); $str = "Всем привет!"; fputs($fd, $str); fclose($fd); ?&gt;<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