(PHP 4, PHP 5, PHP 7)
sprintf — Возвращает отформатированную строку
Возвращает строку, созданную с использованием строки формата
format
.
format
Строка формата состоит из нуля и более директив: обычных символов (за исключением %), которые копируются напрямую в результирующую строку, и описателей преобразований, каждый из которых заменяется на один из параметров. Это относится как к sprintf(), так и к printf().
Каждый описатель преобразований состоит из знака процента (%), за которым следует один или более дополнительных элементов (в том порядке, в котором они здесь перечислены):
Описатель типа, определяющий, как трактовать тип данных аргумента. Допустимые типы:
Переменные будут преобразованы в соответвующий тип для спецификатора:
Тип | Спецификатор |
---|---|
string | s |
integer | d, u, c, o, x, X, b |
double | g, G, e, E, f, F |
Попытка использовать комбинацию строк и спецификаторов ширины с кодировками, которые требуют более одного байта на символ, может привести к неожиданным результатам.
В строке формата поддерживается нумерация и изменение порядка параметров. Например:
Пример #1 Изменение порядка параметров
<?php
$num = 5;
$location = 'дереве';
$format = '%d обезьян сидят на %s';
echo sprintf($format, $num, $location);
?>
Пример #2 Изменение порядка параметров
<?php
$format = 'На %s сидят %d обезьян';
echo sprintf($format, $num, $location);
?>
Пример #3 Изменение порядка параметров
<?php
$format = 'На %2$s сидят %1$d обезьян';
echo sprintf($format, $num, $location);
?>
Пример #4 Изменение порядка параметров
<?php
$format = 'На %2$s сидят %1$d обезьян.
Как здорово, когда на %2$s сидят %1$d обезьян.';
echo sprintf($format, $num, $location);
?>
Пример #5 Указание дополняющего символа
<?php
echo sprintf("%'.9d\n", 123);
echo sprintf("%'.09d\n", 123);
?>
Результат выполнения данного примера:
......123 000000123
Пример #6 Использование описателя позиции и совместно с другими описателями
<?php
$format = 'На %2$s сидят %1$04d обезьян';
echo sprintf($format, $num, $location);
?>
Результат выполнения данного примера:
На дереве сидят 0005 обезьян
Замечание:
Попытка использовать спецификатор позиции, больший чем
PHP_INT_MAX
, приведет к генерации предупреждения функцией sprintf().
The c type specifier ignores padding and width
args
...
Возвращает строку, отформатированную в соответствии со строкой
format
, или FALSE
в случае возникновения ошибки.
Пример #7 sprintf(): заполнение нулями
<?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'
Пример #8 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.10s]\n", $t); // выравнивание влево с обрезкой в 10 символов
?>
Результат выполнения данного примера:
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [many monke]
Пример #9 sprintf(): целые числа, дополненные нулями
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Пример #10 sprintf(): форматирование денежных величин
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money выведет "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted выведет "123.10"
?>
Пример #11 sprintf(): научная нотация
<?php
$number = 362525200;
echo sprintf("%.3e", $number); // выведет 3.625e+8
?>