Оглавление
Сохранение данных в файл
Самым простым способом записи данных файл, является вызов функции 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);
Надеюсь пост был вам полезен! Удачи! )