If you use the command line interface (CLI SAPI), you may be interested by the 3 standard input/output streams (STDIN, STDOUT & STDERR) described at: https://www.php.net/manual/en/features.commandline.io-streams.php(PHP 5, PHP 7, PHP 8)
fprintf — Записывает отформатированную строку в поток
   Функция записывает строку, которую создала по условиям строки формата
   format, в ресурс поток, дескриптор которого передали
   в параметр stream.
  
streamРесурс (resource) указателя файловой системы, который обычно создают функцией fopen().
format
   Строка формата состоит из нуля или более директив:
   обычные символы (за исключением %), которые
   просто выводятся без изменения,
   и спецификаторы преобразования, каждый из которых
   требует передачи своего параметра.
  
   Спецификатор преобразования соответствует прототипу:
   %[argnum$][flags][width][.precision]specifier.
  
    Целое число, за которым следует знак доллара $,
    чтобы указать, какой числовой аргумент обрабатывать при преобразовании.
   
| Флаг | Описание | 
|---|---|
| - | Выравнивание по левому краю в пределах заданной ширины поля; По умолчанию выравнивание происходит по правому краю. | 
| + | Печатает плюс +у не отрицательных чисел;
         По умолчанию знак печатается только у отрицательных чисел. | 
|  (пробел) | Дополняет результат пробелами. Это поведение по умолчанию. | 
| 0 | Дополняет числа нулями (только слева).
         Со спецификатором sтакже может
         дополнять нулями справа. | 
| '(символ) | Дополняет результат символом (символ). | 
    Либо целое число, которое указывает, сколько символов (минимум) должно получиться в результате преобразования,
    либо *.
    Если указали символ *, ширина задаётся как дополнительное целое значение,
    которое предшествует значению, которое отформатировал спецификатор.
   
    Точка ., за которой необязательно следует целое число
    или символ *, значение которых зависит от спецификатора:
    
e, E,
       f и F:
       задаёт количество цифр после десятичной запятой (значение по умолчанию равно 6).
      
     g,G,
       h и H:
       задаёт максимальное значение печатаемых значащих цифр.
      
     s: задаёт ограничение
       максимального количества символов в строке, которые выведет функция.
      
     Замечание: Если указали точку без последующего значения точности, точность будет считаться за 0. Если указали символ
*, точность задаётся как дополнительное целое значение, которое предшествует значению, которое отформатировал спецификатор.
| Спецификатор | Описание | 
|---|---|
| % | Символ процента. Аргументы не требуются. | 
| b | Аргумент рассматривается как целое число и печатается в бинарном представлении. | 
| c | Аргумент рассматривается как целое число и печатается как символ из таблицы ASCII с соответствующим кодом. | 
| d | Аргумент рассматривается как целое число и печатается как целое число со знаком. | 
| e | Аргумент считается за число в научной нотации (т. е. 1.2e+2). | 
| E | Аргумент аналогичен спецификатору e,
        но с заглавным символом (т. е. 1.2E+2). | 
| f | Аргумент считается за число с плавающей точкой (с учётом локали). | 
| F | Аргумент считается за число с плавающей точкой (без учёта локали). | 
| g | Общий формат. Пусть P равно точности, если точность не равна нулю, 6, если точность не задали, или 1, если точность равна 0. Тогда, если преобразование со стилем «E» будет иметь показатель степени X: Если P > X ≥ −4, преобразование будет в стиле «f» и точность будет P - (X + 1). Иначе преобразование будет в стиле «e» и точность будет P - 1. | 
| G | Аргумент аналогичен спецификатору g, но использует
        спецификаторыEиf. | 
| h | Аргумент аналогичен спецификатору g, но использует
        спецификаторF.
        Доступен с PHP 8.0.0. | 
| H | Аргумент аналогичен спецификатору g, но использует
        спецификаторыEиF.
        Доступен с PHP 8.0.0. | 
| o | Аргумент рассматривается как целое число и печатается в восьмеричном представлении. | 
| s | Аргумент рассматривается и печатается как строка. | 
| u | Аргумент рассматривается как целое число и печатается как беззнаковое целое число. | 
| x | Аргумент рассматривается как целое число и печатается в шестнадцатеричном представлении (буквы будут в нижнем регистре). | 
| X | Аргумент рассматривается как целое число и печатается в шестнадцатеричном представлении (буквы будут в верхнем регистре). | 
    Спецификатор c игнорирует спецификаторы преобразования дополнения и ширины.
   
Попытка использовать комбинацию спецификаторов строки и ширины с кодировками, которые требуют больше одного байта на символ, иногда даёт неожиданные результаты.
Функция приведёт переменные к типу, который соответствует спецификатору:
| Тип | Спецификатор | 
|---|---|
| string | s | 
| int | d,u,c,o,x,X,b | 
| float | e,E,f,F,g,G,h,H | 
values
Функция возвращает длину записанной строки.
   Начиная с PHP 8.0.0, если количество аргументов равно нулю, выбрасывается исключение ValueError.
   До PHP 8.0.0 вместо этого выдавалась ошибка уровня E_WARNING.
  
   Начиная с PHP 8.0.0, если [width] меньше нуля или больше PHP_INT_MAX,
   выбрасывается исключение ValueError.
   До PHP 8.0.0 вместо этого выдавалась ошибка уровня E_WARNING.
  
   Начиная с PHP 8.0.0, если [precision] меньше нуля или больше PHP_INT_MAX,
   выбрасывается исключение ValueError.
   До PHP 8.0.0 вместо этого выдавалась ошибка уровня E_WARNING.
  
   Начиная с PHP 8.0.0, если аргументов задано меньше, чем требуется, выбрасывается исключение ArgumentCountError.
   До PHP 8.0.0 вместо этого выдавалась ошибка уровня E_WARNING.
  
| Версия | Описание | 
|---|---|
| 8.0.0 | Функция больше не возвращает false, если возникла ошибка. | 
| 8.0.0 | Выбрасывает исключение ValueError, если количество аргументов равно нулю;
       раньше функция выдавала ошибку уровня E_WARNING. | 
| 8.0.0 | Выбрасывает исключение ValueError, если [width]меньше нуля или большеPHP_INT_MAX;
       раньше функция выдавала ошибку уровняE_WARNING. | 
| 8.0.0 | Выбрасывает исключение ValueError, если [precision]меньше нуля или большеPHP_INT_MAX;
       раньше функция выдавала ошибку уровняE_WARNING. | 
| 8.0.0 | Выбрасывает исключение ArgumentCountError, если аргументов задано меньше, чем требуется;
       раньше функция выдавала ошибку уровня E_WARNING. | 
Пример #1 Дополнение целочисленных значений ведущими нулями функцией fprintf()
<?php
if (!($fp = fopen('date.txt', 'w'))) {
    return;
}
$year = 2005;
$month = 5;
$day = 6;
fprintf($fp, "%04d-%02d-%02d", $year, $month, $day);
// Функция запишет дату, которую отформатировала по стандарту ISO, в файл date.txt
?>Пример #2 Пример форматирования денежных сумм функцией fprintf()
<?php
if (!($fp = fopen('currency.txt', 'w'))) {
    return;
}
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// Конструкция echo $money выведет "123.1";
$len = fprintf($fp, '%01.2f', $money);
// Функция записала строку "123.10" в файл currency.txt
echo "Функция записала $len байтов в файл currency.txt";
// Значение, которое возвращает функция fprintf, содержит количество записанных байтов
?>
If you use the command line interface (CLI SAPI), you may be interested by the 3 standard input/output streams (STDIN, STDOUT & STDERR) described at: https://www.php.net/manual/en/features.commandline.io-streams.php