Форматирование текста с помощью printf / sprintf
Автор: Дмитрий Бородин
printf("как форматировать", парметр1, параметр2, ...) -- выводит результат на экран
$result=sprintf("..", .., .., ...) - тоже самое, только строка не выводиться, а помещается в $result
Цитата из перевода мануала (ПРИМЕРЫ ниже :-):
sprintf
sprintf -- возвращает форматированную строку
Описание
sprintf (string format, mixed [args]...);
Возвращает строку, обрабатываемую в соответствии с форматирующей строкой format.
Форматирующая строка, содержащая ноль или более директив:
обычные символы (кроме %) которые копируются прямо в результат, и
that are
copied directly to the result, и описания изменений, каждое из которых выполняет определенные действия. Это применительно и к sprintf() и к printf()
Каждое описание изменений состоит из следующих элементов, в порядке:
-
Дополнительный описатель заполнения, который говорит, какие символы будут использоваться для заполнения
результата до правильног размера строки. Это могут быть пробелы или 0 (символ нуля). По умолчанию заполняется пробелами. Алтернативный символ заполнения
может быть определен одинарной кавычкой ('). См. примеры ниже.
-
Дополнительный описатель выравнивания , который говорит, что результат должен быть выравнен по левому или по правому краю.
По умолчанию выравнивание происходит по правому краю; символ - приведет к вырвниванию по левому краю.
-
Дополнительный описатель ширины, который говорит, с каким количеством символов (минимум) пожет производится данная замена.
-
Дополнительный описатель точности, который говорит, сколько десятичных знаков следует отображать для чисел с плавающей точкой.
Этот описатель не действует на остальные типы, кроме double. (другая полезная функция для
форматирования чисел это number_format().)
-
Описатель типа, который говорит о том, как тип данных аргумента должен трактоваться.
Возможные типы:
% - символ процента. Аргумент не требуется. |
b - аргумент трактуется как integer и представляется как двоичное число. |
c - аргумент трактуется как integer и представляется как символ с ASCII значением. |
d - аргумент трактуется как integer и представляется как десятичное число. |
f - аргумент трактуется как double и представляется как число с плавающей точкой. |
o - аргумент трактуется как integer и представляется как восьмиричное число. |
s - аргумент трактуется и представляется как строка. |
x - аргумент трактуется как integer и представляется как шестнадцатиричное число (с буквами
в нижнем регистре). |
X - аргумент трактуется как integer и представляется как шестнадцатиричное число (с буквами
в верхнем регистре). |
См. также: printf(), number_format()
Примеры
Пример 1. sprintf: числа с нулями
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day); |
Пример 2. sprintf: форматирование денежной еденицы
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf ("%01.2f", $money);
// echo $formatted will output "123.10"
Примеры
Все то, что записано >>> между таких скобок <<< является результатом
работы фукнции (т.е. пример вывода на экран)
$s='MyString'; -> строка %s
$f=12345.6789; -> дробное %f
$d=12345; -> целое %d 10-я система: 0123456789
16числа %x 16-я система: 0123456789abcdef
16числа %X 16-я система: 0123456789ABCDEF
8числа %o 8-я система: 01234567
2числа %b 2-я система: 01
просто выводим число:
printf("%d",$d); >>> 12345 <<<
просто выводим 16число:
printf("%X",123456789); >>> 75BCD15 <<<
просто выводим 2число:
printf("%b",$d); >>> 11000000111001 <<<
просто выводим дробное число:
printf("%f",$f); >>> 12345.6789 <<<
дополнение чисел нулями:
printf("%010d",$d); >>> 0000012345 <<<
округление до 3х знаков после запятой:
printf("%.3f",$f); >>> 12345.679 <<<
просто выводим число + посторонний текст:
printf("посторонний%dтекст",$d); >>> посторонний12345текст <<<
вывод нескольких переменных - последовательное перечисление
printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString <<<
выравнивание (ширина 20 символов) по правому краю, пустоту заполняем '_':
printf("%'_20s",MyString); >>> ____________MyString <<<
выравнивание по левому краю, пустоту заполняем 'x':
printf("%-'x20s",MyString); >>> MyStringxxxxxxxxxxxx <<<
Другие примеры смотрим тут:
http://php.su/functions/?number-format
http://php.su/functions/?sprintf
|
|