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 — Write a formatted string to a stream
Write a string produced according to format to the
stream resource specified by 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 > 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
Returns the length of the string written.
Починаючи з PHP 8.0.0, якщо не задано жодного параметра, то викидається
ValueError. Раніше виводилось повідомлення
E_WARNING.
Починаючи з PHP 8.0.0, якщо значення [width] менше за нуль
або більше за PHP_INT_MAX, то викидається
ValueError. Раніше виводилось повідомлення
E_WARNING.
Починаючи з PHP 8.0.0, якщо значення [precision] менше за
нуль або більше за PHP_INT_MAX, то викидається
ValueError. Раніше виводилось повідомлення
E_WARNING.
Починаючи з PHP 8.0.0, якщо якщо не задано обов'язкові параметри, то
викидається ArgumentCountError. Раніше функція
повертала false, а також виводилося повідомлення
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(): zero-padded integers
<?php
if (!($fp = fopen('date.txt', 'w'))) {
return;
}
$year = 2005;
$month = 5;
$day = 6;
fprintf($fp, "%04d-%02d-%02d", $year, $month, $day);
// will write the formatted ISO date to date.txt
?>Приклад #2 fprintf(): formatting currency
<?php
if (!($fp = fopen('currency.txt', 'w'))) {
return;
}
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$len = fprintf($fp, '%01.2f', $money);
// will write "123.10" to currency.txt
echo "wrote $len bytes to currency.txt";
// use the return value of fprintf to determine how many bytes we wrote
?>
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