Форматирование строк с помощью функций printf и sprintf
Часто встречается задача представления различных данных в строковом виде, например, для вывода на экран. Для этого идеально подходят две функции — printf и sprintf.
printf сразу выводит результат на экран, a sprintf возвращает его в виде строки. Ниже приведен синтаксис этих функций (здесь и далее аргументы в квадратных скобках являются необязательными):
printf(формат [, аргументы]) sprintf(формат [, аргументы])
Строка формата состоит из нескольких директив (в предельном случае она может быть и пуста, но тогда и результат будет пустой строкой). Каждая директива представляет собой символы, которые копируются без изменений, или спецификацию фотмата. Спецификация формата начинается со знака процента (%), после которого следуют по порядку один или несколько элементов:
- Необязательный описатель заполнения, определяющий, какой символ будет использоваться для дополнения результата до требуемой длины. Это может быть пробел (по умолчанию) или 0.
- Необязательный символ «-» (минус), который задает выравнивание результата влево. По умолчанию результат выравнивается вправо.
- Необязательное число, задающее минимальное число символов в результате форматирования.
- Необязательный описатель точности, определяющий, сколько десятичных разрядов отображать для чисел с плавающей точкой. Записывается как точка с числом после нее. Имеет смысл только для числовых данных типа float.
- Описатель типа данных аргумента — символ.
Ниже перечислены допустимые описатели типов данных:
% - Применяется для вывода символа процента. Аргумент не используется.
b - Аргумент считается целым числом и выводится в виде двоичного числа.
с - Аргумент считается целым числом и выводится в виде символа с соответствующим кодом ASCII.
d - Аргумент считается целым числом и выводится в виде десятичного числа со знаком.
е - Аргумент считается вещественным числом (float) и выводится в экспоненциальном виде, например 1.2е+2.
f - Аргумент считается вещественным числом (float) и выводится в виде десятичного числа.
о Аргумент считается целым числом и выводится в виде восьмеричного числа.
s - Аргумент считается строкой и выводится как строка, и Аргумент считается целым числом и выводится в виде целого числа без знака.
х - Аргумент считается целым числом и выводится в виде шестнадцатеричного числа, используются прописные буквы.
Эти функции особенно удобны для работы с вещественными числами. Например, спецификация формата % f 6.2 описывает вещественное число, которое займет 6 знаков, из них два знака будет отведено на дробную часть числа. Ниже приведен пример использования рассматриваемых функций.
<?рпр printf ("У меня %s яблок и %s апельсинов.\п", 6, 56); $уеаг = 2005; $month = 4; $day = 28; printf ("%04d-%02d-%02d\n", $year, $month, $day); $price = 5999.99; printf("\$%01.2f\n", $price); printf("%6.2f\n", 1.2); printf("%6.2f\n", 10.2); printf("%6.2f\n", 100.2); $string = sprintf ("Сейчас у меня %s яблок и %s апельсинов.\n", 5, 45); echo $string; ?>
В этом примере представлен широкий спектр типов данных. Вот что будет выведено на экран в результате:
У меня 6 яблок и 56 апельсинов. 2005-04-28 $5999.99 1.20 10.20 100.20 Сейчас у меня 5 яблок и 45 апельсинов.
Автор: Стивен Хольцнер. Переводчик: С. Банников