Урок 16: Запись в текстовый файл

В предыдущем уроке мы научились читать из текстового файла. В этом уроке будем записывать в него.

Эти два метода очень похожи, но есть одно важное отличие: для записи необходимо наличие права на запись. Это значит, что должен размещаться в директории, в которой у вас есть необходимые права.

Если вы работаете локально на своём компьютере, то можете сами установить права: щёлкните правой мышью на папке и выберите "Свойства/Properties". На большинстве вэб-хостов обычно имеется только одна папка с правами записи. Часто она называется "cgi-bin", "log", "databases" и т. п. Если ваш вэб-хост допускает, можно устанавливать права самостоятельно. Обычно можно щёлкнуть правой мышью на папке в FTP-клиенте и выбрать "properties" или "permissions" ил что-то похожее. Скриншот ниже показывает, как это выглядит в FileZilla.

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>
	
	

В следующих уроках мы разберём другой способ хранения данных: базы данных.



<< Урок 15: Чтение из текстового файла

Урок 17: Базы данных >>