Урок 16: Запись в текстовый файл
В предыдущем уроке мы научились читать из текстового файла. В этом уроке будем записывать в него.
Эти два метода очень похожи, но есть одно важное отличие: для записи необходимо наличие права на запись. Это значит, что должен размещаться в директории, в которой у вас есть необходимые права.
Если вы работаете локально на своём компьютере, то можете сами установить права: щёлкните правой мышью на папке и выберите "Свойства/Properties". На большинстве вэб-хостов обычно имеется только одна папка с правами записи. Часто она называется "cgi-bin", "log", "databases" и т. п. Если ваш вэб-хост допускает, можно устанавливать права самостоятельно. Обычно можно щёлкнуть правой мышью на папке в FTP-клиенте и выбрать "properties" или "permissions" ил что-то похожее. Скриншот ниже показывает, как это выглядит в FileZilla.
См. также страницы поддержки ваших вэб-хостов.
Обратите внимание, что именно текстовый файл должен находиться в папке с правами на запись, а не РНР-файл.
Открытие текстового файла для записи
Как и при чтении текстового файла, функция fopen используется при записи, но на этот раз режим устанавливается "w" (writing) или "a" (appending).
Разница между writing и appending в том, как размещается 'курсор' - в начале или в конце текстового файла.
В примерах этого урока используется пустой текстовый файл textfile.txt. Но вы можете создать свой собственный файл, если желаете.
Сначала попробуем открыть этот текстовый файл для записи:
<?php // Открыть текстовый файл $f = fopen("textfile.txt", "w"); // Закрыть текстовый файл fclose($f); ?>
Пример 1: Запись строки в текстовый файл
Для записи строки мы должны использовать функцию fwrite:
<html> <head> <title>Запись в текстовый файл</title> </head> <body> <?php // Открыть текстовый файл $f = fopen("textfile.txt", "w"); // Записать строку текста fwrite($f, "PHP is fun!"); // Закрыть текстовый файл fclose($f); // Открыть файл для чтения и прочитать строку $f = fopen("textfile.txt", "r"); echo fgets($f); fclose($f); ?> </body> </html>
Поскольку файл открыть для записи, строка добавляется в начало файла и перезаписывает существующую строку. Если мы открываем файл для appending, строка добавляется в низ файла, который увеличивается на одну строку всякий раз при записи.
Пример 2: Добавление блока текста в текстовый файл
Разумеется, можно также добавлять целый текстовый блок, а не одну строку:
<html> <head> <title>Запись в текстовый файл</title> </head> <body> <?php // Открыть текстовый файл $f = fopen("textfile.txt", "w"); // Записать текст fwrite($f, $_POST["textblock"]); // Закрыть текстовый файл fclose($f); // Открыть файл для чтения и прочитать строку $f = fopen("textfile.txt", "r"); // Читать текст echo fgets($f); fclose($f); ?> </body> </html>
В следующих уроках мы разберём другой способ хранения данных: базы данных.