Monday, May 16, 2011

Функция sprintf в PHP

Сегодня речь пойдет о функции sprintf. Она предоставляет целый спектр возможностей для форматирования текста.

Напомним основное. Таково описание функции.

string sprintf ( string format [, mixed args] )
где
$format - это некий шаблон, в который в результате выполнения функции подставляются заданные нами значения $args

Например, с помощью sprintf можно форматировать число, дополняя его нулями до нужной нам длины. Делается это так:
print(sprintf("Это %03d", 15));
Получим вывод:
Это 015
Расшифруем шаблон "Это %03d", который мы передали функции.
Все шаблоны для подстановки начинаются с символа "%".
Мы задали аргумент 15 и этим шаблоном показали функции отформатировать число так, чтобы оно состояло из 3 символов - "Это %03d".
Также, тот факт, что недостаюшие символы дополнились нулями, не случаен - мы задали это в шаблоне, написав "Это %03d".
Мы могли написать так "Это %3d", тогда недостаюшие символы дополнились бы пробелами. Потому что пробел - это значение по умолчанию.
Также значением по умолчанию является и тот факт, что дополнение нулей происходит слева.
В нашем примере мы передавали в качестве аргумента 15, т.е. значение типа integer. Символ "d" появляется в шаблоне в связи с этим. В этом случае аргумент трактуется как integer. "Это %03d". Если бы в качестве аргумента нужно было передать строку, мы бы использовали "s" вместо "d".

А вдруг нам не нужны нули, а нужен, например, символ "$"?
Тогда нам следует воспользоваться символом " ' ".
Шаблон будет выглядеть так: "%'$3d"
Получим вывод:
$15
Если мы хотим, чтобы дополнение происходило не с левой, а с правой стороны, то нужно воспользоваться символом "-"
Шаблон будет выглядеть так: "%'$-3d"
На этот раз получим вывод:
15$
Это только малая доля возможностей, предоставленных функцией sprintf, которые более подробно можно изучить конечно же в мануале ;).