|
(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" | |
| |