Функция PHP sprintf

string sprintf ( string format [, mixed args] )

Функция sprintf возвращает строку, созданную с использованием строки формата format.

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

Каждый описатель преобразований состоит из знака процента (%), за которым следует один или более дополнительных элементов (в том порядке, в котором они здесь перечислены):

Необязательный описатель заполнения, который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0. По умолчанию используется пробел. Альтернативный символ может быть указан с помощью '. См. примеры ниже.

Необязательный описатель выравнивания, определяющий выранивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.

Необязательное число, описатель ширины, определяющий минимальное число символов, которое будет содержать результат этого преобразования.

Необязательный описатель точности, определяющий, сколько десятичных разрядов отображать для чисел с плавающей точкой. Имеет смысл только для числовых данных типа float. (Для форматирования чисел удобно также использовать функцию number_format.)

Описатель типа, определяющий, как трактовать тип данных аргумента. Допустимые типы:

 Начиная с PHP 4.0.6 в строке формата поддерживается нумерация и изменение порядка параметров.

Изменение порядка параметров

<?php
   $format = "There are %d monkeys in the %s";
   printf($format, $num, $location);
?>  

Этот код выведет "There are 5 monkeys in the tree". Теперь представьте, что строка формата содержится в отдельном файле, который потом будет переведен на другой язык, и мы переписываем ее в таком виде:

<?php
   $format = "The %s contains %d monkeys";
   printf($format, $num, $location);
?>  

Появляется проблема: порядок описателей преобразования не соответствует порядку аргументов. Мы не хотим менять код, и нам нужно указать, какому аргументу соответствует тот или иной описатель преобразования.

<?php
   $format = "The %2$s contains %1$d monkeys";
   printf($format, $num, $location);
?>  

Нумерация аргументов имеет еще одно применение: она позволят вывести один и тот же аргумент несколько раз без передачи функции дополнительных параметров.

<?php
   $format = "The %2$s contains %1$d monkeys.
           That's a nice %2$s full of %1$d monkeys.";
   printf($format, $num, $location);
?>  

См. также описание функций printf, sscanf, fscanf, vsprintf и number_format.

Примеры

sprintf: заполнение нулями

<?php
   $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>  

sprintf: форматирование денежных величин

<?php
   $money1 = 68.75;
   $money2 = 54.35;
   $money = $money1 + $money2;
   // echo $money выведет "123.1";
   $formatted = sprintf("%01.2f", $money);
  // echo $formatted выведет "123.10"
?>  

sprintf: научная нотация

<?php
   $number = 362525200;
   echo sprintf("%.3e", $number); // выведет 3.63e+8
?>