 |
(PHP
3, PHP 4) sprintf - возвращает отформатированную строку. Описаниеstring
sprintf (string format [, mixed args]) Возвращает строку, созданную
в соответствии со строкой форматирования format. Строка
форматирования состоит из 0 или более директив: обычных символов (исключая %),
которые копируются прямо в результат, и спецификаций конвертации, каждая
из которых приводит к извлечению её собственного параметра. Это применяется к
sprintf() и к printf(). Каждая спецификация
конвертации состоит из знака процентов (%) с последующим одним или более
из следующих элементов, в данном порядке: -
Необязательный padding-спецификатор,
который сообщает, какой символ будет использоваться для заполнения результатов
до размера строки. Это может быть символ space/пробел или 0 (символ нуль).
По умолчанию заполняется пробелами. Альтернативный заполнитель может быть специфицирован
с помощью префикса - одинарной кавычки ('). См. примеры далее. Необязательный
alignment-спецификатор, который сообщает, должен ли результат выравниваться
влево или вправо (left-justified или right-justified). По умолчанию right-justified;
символ - здесь делает left-justified. Необязательное число,
width-спецификатор, который сообщает, сколько символов (минимум) должна
дать эта конвертация. Необязательный precision-спецификатор,
который сообщает, сколько десятеричных цифр должно выводиться для чисел с плавающей
точкой. Эта опция не оказывает действия на другие типы, кроме
float. (Для форматирования чисел используется также функция number_format().) type-спецификатор,
который сообщает, как какой тип должны рассматриваться данные аргумента. Возможные
типы: | % - литеральный символ процентов.
Аргументы не требуются. | | b - аргумент рассматривается
как integer и представлен как двоичное число. | | c - аргумент
рассматривается как integer и представлен как символ с этим ASCII-значением. | | d
- аргумент рассматривается как integer и представлен как (знаковое) десятеричное
число. | | u - аргумент рассматривается как integer и представлен
как беззнаковое десятеричное число. | | f - аргумент рассматривается
как float и представлен как число с плавающей
точкой. | | o - аргумент рассматривается как integer и представлен
как восьмеричное число. | | s - аргумент рассматривается
и представляется как строка/string. | | x - аргумент рассматривается
как integer и представлен как шестнадцатеричное число (с буквами в нижнем регистре). | | X
- аргумент рассматривается как integer и представлен как шестнадцатеричное число
(с буквами в верхнем регистре). |
Как и в
PHP версии 4.0.6, строка форматирования поддерживает нумерацию/обмен аргументов
(numbering/swapping). Вот пример: Пример
1. Обмен/swapping аргументов
$format = "There are %d monkeys in the %s"; printf($format,$num,$location); | |
Это
выведет "There are 5 monkeys in the tree". Но представьте, что мы создаём
строку форматирования в отдельном файле, что является обычным, поскольку мы хоти
интернационализировать её, и мы переписываем: Пример
2. Обмен аргументов$format
= "The %s contains %d monkeys"; printf($format,$num,$location); |
|
Вот
мы и получили проблему. Порядок заглушек в строке формата не совпадает с порядком
аргументов в коде. Мы хотели бы оставить код без изменений и просто указать в
строке формата, к каким аргументам относятся заглушки строки формата. Теперь запишем
строку формата так:
Пример 3. Обмен аргументов
$format = "The %2\$s contains %1\$d monkeys"; printf($format,$num,$location); | |
Теперь
появилось преимущество: вы можете повторять заглушки без добавления аргументов
в коде. Например: Пример
4. Обмен аргументов $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() и number_format(). ПримерыПример
5. sprintf(): целые числа с заполнением нулями $isodate
= sprintf("%04d-%02d-%02d", $year, $month, $day); |
|
Пример 6. sprintf(): форматирование валюты
$money1 = 68.75; $money2 = 54.35; $money = $money1 + $money2; //
echo $money will output "123.1"; $formatted = sprintf("%01.2f", $money); // echo
$formatted выдаст "123.10" | |
|  |