В статье даны примеры записи и чтения текстовых данных, а так же массивов в файлы средствами php.

Сохранение данных в файл

Самым простым способом записи данных файл, является вызов функции file_put_contents(). Функция принимает 3 аргумента, путь к файлу, данные и флаг позволяющий немного изменить поведение функции. Она записывает содержание переменной в файл. Если файл не найден, то она попытается его создать, если же файл существует, то по умолчанию, функция полностью перезапишет данные в нём. Чтобы изменить это, следует третьим аргументом передать флаг FILE_APPEND, тогда данные будут дописаны в конец файла.

Функция file_put_contents()


$data = 'Некоторые данные для сохранения а файл ' . date('d.m.Y H:i:s') . "\n";
$filePath = __DIR__ . '/log.txt';
 
file_put_contents($filePath, $data);

Функции fopen() / fwrite()

Функции fopen(), fwrite(), fclose() связаны предназначены для гибкой работы с файлами.

  • fopen() - открытие или создание файла.
  • fwrite() - запись данных.
  • fclose() - закрытие файла.

$data = 'Некоторые данные для сохранения а файл ' . date('d.m.Y H:i:s') . "\n";
$filePath = __DIR__ . '/log.txt';
 
$fh = fopen($filePath, 'w');
fwrite($fh, $data);
fclose($fh);

Более подробно про работу с этими функциями можно прочитать в этой статье.

Дописать строку в начало файла


$addData = 'Дополнительные данные ' . date('d.m.Y H:i:s') . "\n";
$filePath = __DIR__ . '/log.txt';

//Пример с предварительным получением содержимого существующего файла
$currentLog = file_get_contents($filePath);
file_put_contents($filePath, $addData . $currentLog);

Дописать строку в конце файла


$addData = 'Дополнительные данные ' . date('d.m.Y H:i:s') . "\n";
$filePath = __DIR__ . '/log.txt';


//Пример с флагом 
file_put_contents($filePath, $addData, FILE_APPEND );

Либо, можно использовать функцию fopen() вызвав её с флагом «a» 


$addData = 'Дополнительные данные ' . date('d.m.Y H:i:s') . "\n";
$filePath = __DIR__ . '/log.txt';
 
$fh = fopen($filePath, 'a');
fwrite($fh, $data);
fclose($fh);

Записать массив в файл

При записи массивов в файл их предварительно нужно преобразовать в строку, путём сериализации массива или же конвертированию в JSON.

Функция serialize()


$arr = ['foo', 'bar', 'hallo', 'world'];
 
$text = base64_encode(serialize($arr));
file_put_contents(__DIR__ . '/log.txt', $text);

Функция json_encode()


$arr = ['foo', 'bar', 'hallo', 'world'];
 
$text = json_encode($arr, JSON_UNESCAPED_UNICODE);
file_put_contents(__DIR__ . '/log.json', $text);

Чтение из файла

При помощи file_get_contents()

$filePath = __DIR__ . '/log.txt';
$log = file_get_contents($filePath);
echo $log;

При помощи fopen(), fwrite()


$log = '';
$fh = fopen($filePath, 'r');
while (!feof($fh)) {
	$line = fgets($fh);
	$log .= $line . "\n";
}

fclose($fh);

echo $log;

Флаг «r» открывает файл только для чтения.

Чтение из файла в массив 

Если файл содержит данные подразумевающие дальнейшую конвертацию в массив для удобства работы, вы можете использовать готовую функцию file(). Функция принимает 3 аргумента, обязательный путь к файлу и необязательные, флаг влияющий на поведение функции при чтении файла, а так же контекст.

  • FILE_USE_INCLUDE_PATH - функция ищет файл в include_path
  • FILE_IGNORE_NEW_LINES - Пропускать новую строку в конце каждого элемента массива
  • FILE_SKIP_EMPTY_LINES - Пропускать пустые строки

$filePath = __DIR__ . '/log.txt';
$arr = file($filePath);
print_r($arr);

Чтение файла в браузер

Если нужно сразу вывести содержимое файла в браузере, воспользуйтесь следующим кодом:

$filePath = __DIR__ . '/log.txt';
readfile($filePath);

Получить первую строку из файла


Вариант с fopen()

$filePath = __DIR__ . '/log.txt';
$fh = fopen($filePath, 'r');
echo fgets($fh);
fclose($fh);

Вариант с file()

$filePath = __DIR__ . '/log.txt';
$arr = file($filePath);
echo $arr[0];


Если нужно получить первые несколько строк

$filePath = __DIR__ . '/log.txt';
$arr = file($filePath);
$line3 = array_slice($arr, 0, 3); //получаем первые 3 строки
print_r($line3);

Получить последнюю строку из файла

Тут всё основано на преобразовании содержимого файла в массив и дальнейшее его чтение по индексам.


$filePath = __DIR__ . '/log.txt';
$arr = file($arr);
$lastLine = array_slice($array, -1);
echo $lastLine[0];

Получим последние 3 строки из файла


$filePath = __DIR__ . '/log.txt';
$arr = file($arr);
$last3 = array_slice($array, -3);
print_r($last3);

Надеюсь пост был вам полезен! Удачи! )

Полезная статья?
(Голосов: 1, Рейтинг: 3.3)
Курсы от партнёров
Хотите освоить востребованную профессию? Воспользуйтесь предложениями от наших партнёров. Пройдите учебный курс по одному из популярных IT направлений.

Все курсы партёнров
Вам также могут понравиться
CSS курсоры

CSS курсоры

В статье рассмотрены возможности изменения курсоров пользователя при помощи CSS

Работа с регистром строк в php

Работа с регистром строк в php

В статье рассмотрены примеры работы с регистром строк в языке PHP, проверка регистра, изменение, инверсия

Работа с циклами в PHP

Работа с циклами в PHP

В статье рассмотрены примеры работы с циклами в PHP


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке