Внимание! При записи чисел в текстовый файл оставлять между ними хотя бы по одному пробелу!
Для записи данных в файл используется еще одна функция:
file_put_contents(“путь”, “строка”);
Она позволяет записать данные в файл без его открытия и последующего закрытия. Если
нужно добавить данные в конец существующего текстового файла, то в ней используется
еще и третий аргумент FILE_APPEND:
file_put_contents(“путь”, “строка”, FILE_APPEND);
Перед чтением данных из файла его необходимо открыть для чтения:
($fp = fopen(“D:/User/my_file.txt”, “rt”)) // по указанному пути
or die(“Невозможно открыть файл”); // текстовый файл
// my_file.txt открыт для чтения
Если файл не найден, то значение дескриптора $fp будет равно false, будет выдано сообщение “Невозможно открыть файл”, и сценарий будет закончен.
Построчное чтение (ввод) из файла осуществляется функцией fgets():
fgets($fp, $length);
$fp – дескриптор файла,
$length - количество байтов, которое требуется прочитать.
При передаче этого параметра функция fgets() будет читать строку из файла, указанного параметром $fp, пока не встретит конец строки (\n), конец файла или не прочитает столько байтов, сколько указано в $length . Как правило, этот параметр всегда больше длины считываемой строки:
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”;
fwrite($fp, $str);
$str=”Это вторая строка\n”;
fwrite($fp, $str);
$str=”Это третья строка\n”;
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
$str=fgets($fp, 64);
echo $str, "<BR>";
$str=fgets($fp, 64);
echo $str, "<BR>";
$str=fgets($fp, 64);
echo $str, "<BR>";
fclose($fp); // закрытие файла
На экран будет выведено:
Кроме построчного чтения данных из файла, можно читать файл блоками произвольной длины. Для этого используется функция:
fread($fp, $length);
$fp – дескриптор файла,
$length - количество байтов, которое требуется прочитать.
Она возвращает запрошенные данные, если только в процессе чтения не был достигнут конец файла (символы конца строки игнорируются):
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”;
fwrite($fp, $str);
$str=”Это вторая строка\n”;
fwrite($fp, $str);
$str=”Это третья строка\n”;
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
$str=fread($fp, 8);
echo $str, "<BR>";
$str=fread($fp, 8);
echo $str, "<BR>";
$str=fread($fp, 8);
echo $str, "<BR>";
fclose($fp); // закрытие файла
На экран будет выведено:
Это перв ая строк а Это вт
Таким образом, ESC-последовательность\n выводится как пробел.
Прочитаем этот же файл до конца, используя функцию feof():
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
while (!feof($fp))
{
$str=fread($fp, 8);
echo $str, "<BR>";
}
fclose($fp); // закрытие файла
На экран будет выведено:
Это перв ая строк а Это вт орая стр ока Это третья с трока
Функции чтения файла, рассмотренные выше, позволяют гибко управлять процессом чтения данных. Однако если нужно просто прочитать все содержимое файла в переменную, то для этого есть хорошее простое средство – функция file_get_contents(). При ее использовании не нужно открывать и закрывать файл:
$str= file_get_contents(“D:/User/my_file.txt”);
var_dump($str);
На экран будет выведено:
string(57)"Это первая строка Это вторая строка Это третья строка "
Таким образом, ESC-последовательность\n такжевыводится как пробел.
Очень удобна функция file().Она формирует массив-список, каждый элемент которого содержит по одной строке (до \n) из этого файла: