Для форматного вывода в PHP используются две замечательных функции: printf() и sprintf() . У них достаточно много возможностей, которые мы обсудим в этом материале.

Функции форматного вывода в PHP

Для форматного вывода в PHP используются две замечательных функции: printf() и sprintf(). У них достаточно много возможностей, которые мы обсудим в этом материале.

Сразу скажу, что разница между printf() и sprintf() лишь в том, что первая выводит строку сразу в выходной поток (например, в браузер), а вторая возвращает её.

Параметр функции - это строка, которая имеет символы с %, называемые спецификаторами, и символы без %, называемых директивами. Директивы остаются неизменными при форматировании, а вот спецификатор приводит к подстановке других параметров функций (следующих за строкой с форматом).

Всего имеется несколько спецификаторов, которые объединяются в одну группу (один общий %), порядок которых следующий:

  1. Спецификатор заполнения. Позволяет заполнить строку до заданного размера конкретным символом. По умолчанию этим символом является пробел.
  2. Спецификатор выравнивания. Данный спецификатор позволяет задать выравнивание строки по правому краю (по умолчанию), либо по левому краю (если указать "-").
  3. Спецификатор минимальной ширины. Если результат будет иметь меньшую длину строки, то она будет заполнена символами из спецификатора заполнения до указанной ширины.
  4. Спецификатор точности. Позволяет указать, какое количество знаков после запятой оставить у числа с плавающей точкой.
  5. Спецификатор типа. Этот спецификатор указывает тип выводимых данных. Их там 8 штук, но на практике используются следующие:
    • d - целое число в десятичном виде.
    • f - число с плавающей точкой в десятичном виде.
    • s - строка.

Давайте разберём классический пример по выводу отформатированной даты:

<?php
  $year = 2012;
  $month = 9;
  $day = 28;
  printf("Дата написания статьи: %02d.%02d.%04d", $day, $month, $year);
?>

Нетрудно догадаться, что в результате будет выведена такая строка: "Дата написания статьи: 28.09.2012". Обратите внимание, сколько групп спецификаторов, столько и параметров передаётся помимо самого формата. Строка "Дата написания статьи: " является директивой, и она остаётся без изменений. Теперь разберём для примера вторую группу спефикаторов, которая отвечает за месяц. Другие группы абсолютно идентичны.

  • % - начало группы спецификатора.
  • 0 - символ, которым заданный параметр будет заполняться до требуемой ширины.
  • 2 - минимальная ширина. Соответственно, если длина строки меньше, то она будет заполнена 0.
  • d - выводиться будет как целое число. Если поставить, например, b (ещё один спецификатор типа), то выведится это же число, но в двоичной форме.

Приведу ещё один популярный пример использования функции printf (и sprintf()), связанный с окргулением чисел:

<?php
  $x = 12.596123;
  printf("%06.2f", $x); // Будет выведено "012.60"
?>

Давайте разберём первый аргумент функции printf():

  • % - начало группы спецификатора.
  • 0 - символ заполнения до требуемой длины.
  • 6 - требуемая длина (точка, безусловно, также входит в эту длину).
  • .2 - точность до 2-х знаков после запятой.
  • f - тип чисел с плавающей точкой. Собственно, округление имеет смысл только для этого типа.

Как видите, функции printf() и sprintf() позволяют легко решать, на первый взгляд, достаточно сложные задачи. Поэтому Вам обязательно нужно иметь их в своём арсенале.