В статье даны примеры записи и чтения текстовых данных, а так же массивов в файлы средствами 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)
Вам также могут понравиться
Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как правильно подключать стили и скрипты к шаблону 1С Битрикс.

Генерация оглавления статьи

Генерация оглавления статьи

В статье рассмотрен пример функции для генерации оглавления статьи блога или новости

Переменные доступные в компоненте 1С Битрикс

Переменные доступные в компоненте 1С Битрикс

В статье разобран список доступных в компоненте 1С Битрикс переменных, позволяющих получить доступ к различным параметрам и методам компонента.


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