Не пропусти свежие посты, подпишись:
В статье даны примеры записи и чтения текстовых данных, а так же массивов в файлы средствами 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, проверка регистра, изменение, инверсия


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