printf
(PHP 4, PHP 5, PHP 7, PHP 8)
printf — Виводить відформатований рядок
Опис
printf(string $format, mixed ...$values): int
Виводить рядок, відформатований відповідно до аргументу format
Список параметрів
format
Рядок формату складається з нуля або більше директив: звичайні символи (за винятком %
), які просто виводяться без зміни та специфікатори перетворення, кожен із яких вимагає передачі свого параметра.
Специфікатори перетворення мають такий формат: %[argnum$][flags][width][.precision]specifier
Argnum
Ціло число, за яким слідує знак долара $
, щоб вказати, який числовий аргумент обробляти під час перетворення.
Прапори
Флаг | Опис |
---|---|
- | Вирівнювання по лівому краю в межах заданої ширини поля; За умовчанням вирівнювання відбувається праворуч. |
+ | Друкує плюс + у не негативних чисел; За замовчуванням знак друкується лише у негативних чисел. |
(space) | Доповнює результат пробілами. Це стандартна поведінка. |
Доповнює числа нулями (тільки зліва). Зі специфікатором s також може доповнювати нулями праворуч. | |
' (char) | Доповнює результат символом (char). |
Ширина
Або ціле число, що вказує, скільки символів (мінімум) має вийти в результаті перетворення, або *
Если указано значение*
ширина задається як додаткове ціле значення, що передує значенню, відформатованому специфікатором.
Точність
Крапка , з наступним цілим числом, або *
значення якого залежить від специфікатора:
- Для специфікаторів
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 |
Приклади
Приклад #1printf(): різні приклади
Loading...
Результат виконання наведеного прикладу:
%b = '10100111101010011010101101'
%c = 'A'
%d = '43951789'
%e = '4.39518e+7'
%u = '43951789'
%u = '4251015507'
%f = '43951789.000000'
%o = '247523255'
%s = '43951789'
%x = '29ea6ad'
%X = '29EA6AD'
%+d = '+43951789'
%+d = '-43951789'
Приклад #2printf(): специфікатори рядка
Loading...
Результат виконання наведеного прикладу:
[monkey]
[ monkey]
[monkey ]
[0000monkey]
[####monkey]
[####monkey]
[ many monk]
[many monk ]
Дивіться також
- print - Виводить рядок
- sprintf() - Повертає відформатований рядок
- fprintf() - Записує відформатований рядок у потік
- vprintf() - Виводить відформатований рядок
- vsprintf() - Повертає відформатований рядок
- vfprintf() - Записує відформатований рядок у потік
- sscanf() - Розбирає рядок відповідно до заданого формату
- fscanf() - Обробляє дані з файлу відповідно до формату
- number_format() - Форматує число з поділом груп
- date() - Форматує тимчасову мітку Unix
- flush() - скидає системний буфер виводу