printf

(PHP 4, PHP 5, PHP 7)

printfВыводит отформатированную строку

Описание

printf ( string $format [, mixed $... ] ) : int

Выводит строку, отформатированную в соответствии с аргументом format.

Список параметров

format

Строка формата состоит из нуля или более директив: обычные символы (за исключением %), которые просто выводятся без изменения и спецификаторы преобразования, каждый из которых требует передачи своего параметра.

Спецификаторы преобразования имеют следующий формат: %[flags][width][.precision]specifier.

Флаги
Флаг Описание
- Выравнивание по левому краю в пределах заданной ширины поля; По умолчанию выравнивание происходит по правому краю.
+ Печатает плюс + у не отрицательных чисел; По умолчанию знак печатается только у отрицательных чисел.
(space) Дополняет результат пробелами. Это поведение по умолчанию.
0 Дополняет числа нулями (только слева). Со спецификатором s также может дополнять нулями справа.
'(char) Дополняет результат символом (char).

Ширина

Целое число, определяющее минимальное количество символов, которое будет напечатано.

Точность

Точка . с последующим целым числом, работающая по разному для разных спецификаторов:

  • Для спецификаторов e, E, f и F: задает количество цифр после десятичной запятой (по умолчанию 6).
  • Для спецификаторов g и G: задает максимальное значение печатаемых значащих цифр.
  • Для спецификатора s: задает ограничение максимального количества символов в строке, которые будут выведены.

Замечание: Если указана точка без последующего значения точности, то точность будет считаться за 0.

Замечание: Попытка использовать спецификатор позиции со значением больше, чем PHP_INT_MAX приведет к выводу предупреждения.

Спецификаторы
Спецификатор Описание
% Символ процента. Аргументы не требуются.
b Аргумент рассматривается как целое число и печатается в бинарном представлении.
c Аргумент рассматривается как целое число и печатается как символ из таблицы ASCII с соответствующим кодом.
d Аргумент рассматривается как целое число и печатается как целое число со знаком.
e Аргумент считается за число в научной нотации (т.е. 1.2e+2). Начиная с PHP 5.2.1, спецификатор точности задает количество цифр после десятичной запятой. В более ранних версиях он задавал общее количество значащих цифр (т.е. после запятой выводилось на 1 символ меньше).
E Аналогично спецификатору e, но использует заглавные символы (т.е. 1.2E+2).
f Аргумент считается за число с плавающей точкой (с учетом локали).
F Аргумент считается за число с плавающей точкой (без учета локали). Доступно с PHP 5.0.3.
g

Общий формат.

Пусть P равно точности, если она не равно нулю, 6 - если точность не задана и 1, если точность задана как 0. Тогда, если преобразование со стилем "E" будет иметь показатель степени X:

Если P > X ≥ −4, преобразование будет в стиле "f" и точность будет P − (X + 1). В обратном случае, преобразование будет в стиле "e" и точность будет P − 1.

G Аналогично спецификатору g, но использует E и F.
o Аргумент рассматривается как целое число и печатается в восмеричном представлении.
s Аргумент рассматривается и печатается как строка.
u Аргумент рассматривается как целое число и печатается как беззаковое целое число.
x Аргумент рассматривается как целое число и печатается в шестнадцатеричном представлении (буквы будут в нижнем регистре).
X Аргумент рассматривается как целое число и печатается в шестнадцатеричном представлении (буквы будут в верхнем регистре).

Внимание

Спецификатор c игнорирует значения ширины и дополнения

Внимание

Попытка использовать спецификаторы с указанием ширины для строки в многобайтовой кодировке может привести к неожиданным результатам.

Переменные будут приведены к подходящему для спецификатора типу:

Обработка типов
Тип Спецификатор
string s
integer d, u, c, o, x, X, b
double g, G, e, E, f, F

...

Возвращаемые значения

Возвращает длину выводимой строки.

Примеры

Пример #1 printf(): различные примеры

<?php
$n 
=  43951789;
$u = -43951789;
$c 65// ASCII 65 is 'A'

// двойной %% печатает единичный символ '%'
printf("%%b = '%b'\n"$n); // бинарное представление
printf("%%c = '%c'\n"$c); // печатает символ ascii, аналогично функции chr()
printf("%%d = '%d'\n"$n); // целочисленное представление
printf("%%e = '%e'\n"$n); // научная нотация
printf("%%u = '%u'\n"$n); // положительное целое в беззнаковом представлении
printf("%%u = '%u'\n"$u); // отрицательное целое в беззнаковом представлении
printf("%%f = '%f'\n"$n); // представление в виде числа с плавающей запятой
printf("%%o = '%o'\n"$n); // восмеричное представление
printf("%%s = '%s'\n"$n); // строковое представление
printf("%%x = '%x'\n"$n); // шеснадцатеричное представление в нижнем регистре
printf("%%X = '%X'\n"$n); // шеснадцатеричное представление в верхнем регистре

printf("%%+d = '%+d'\n"$n); // знак у положительного целого
printf("%%+d = '%+d'\n"$u); // знак у отрицательного целого
?>

Результат выполнения данного примера:

%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'

Пример #2 printf(): спецификаторы строки

<?php
$s 
'monkey';
$t 'many monkeys';

printf("[%s]\n",      $s); // стандартный вывод
printf("[%10s]\n",    $s); // выравнивание вправо с пробелами
printf("[%-10s]\n",   $s); // выравнивание влево с пробелами
printf("[%010s]\n",   $s); // строка дополняется нулями слева
printf("[%'#10s]\n",  $s); // строка дополняется пользовательским символом '#'
printf("[%10.9s]\n"$t); // выравнивание вправо с отсечкой в 9 символов
printf("[%-10.9s]\n"$t); // выравнивание влево с отсечкой в 9 символов
?>

Результат выполнения данного примера:

[monkey]
[    monkey]
[monkey    ]
[0000monkey]
[####monkey]
[ many monk]
[many monk ]

Смотрите также

  • print - Выводит строку
  • sprintf() - Возвращает отформатированную строку
  • fprintf() - Записывает отформатированную строку в поток
  • vprintf() - Выводит отформатированную строку
  • vsprintf() - Возвращает отформатированную строку
  • vfprintf() - Записывает отформатированную строку в поток
  • sscanf() - Разбирает строку в соответствии с заданным форматом
  • fscanf() - Обрабатывает данные из файла в соответствии с форматом
  • number_format() - Форматирует число с разделением групп
  • date() - Форматирует вывод системной даты/времени
  • flush() - Сброс системного буфера вывода