Функции форматного вывода в PHP
Для форматного вывода в PHP используются две замечательных функции: printf() и sprintf(). У них достаточно много возможностей, которые мы обсудим в этой статье.
Сразу скажу, что разница между printf() и sprintf() лишь в том, что первая выводит строку сразу в выходной поток (например, в браузер), а вторая возвращает её.
Параметр функции - это строка, которая имеет символы с %, называемые спецификаторами, и символы без %, называемых директивами. Директивы остаются неизменными при форматировании, а вот спецификатор приводит к подстановке других параметров функций (следующих за строкой с форматом).
Всего имеется несколько спецификаторов, которые объединяются в одну группу (один общий %), порядок которых следующий:
- Спецификатор заполнения. Позволяет заполнить строку до заданного размера конкретным символом. По умолчанию этим символом является пробел.
- Спецификатор выравнивания. Данный спецификатор позволяет задать выравнивание строки по правому краю (по умолчанию), либо по левому краю (если указать "-").
- Спецификатор минимальной ширины. Если результат будет иметь меньшую длину строки, то она будет заполнена символами из спецификатора заполнения до указанной ширины.
- Спецификатор точности. Позволяет указать, какое количество знаков после запятой оставить у числа с плавающей точкой.
- Спецификатор типа. Этот спецификатор указывает тип выводимых данных. Их там 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() позволяют легко решать, на первый взгляд, достаточно сложные задачи. Поэтому Вам обязательно нужно иметь их в своём арсенале.
-
- Михаил Русаков
Комментарии (5):
возможснотей - возможностей
Ответить
Спасибо, исправил!
Ответить
У вас ошибка в этой строке: 0 - символ, которым заданный параметр будет заполняться до требуемый ширины. Нужно написать ТРЕБУЕМОЙ ШИРИНЫ
Ответить
Всё исправлено, спасибо!
Ответить
Ошибка: символы без %, называемых директивами. Нужно - называемые директивами
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.