Форматирование текста с помощью printf / sprintf

Автор: content Воскресенье, Апрель 8th, 2012 Нет комментариев

Рубрика: Язык PHP

printf(«как форматировать», парметр1, параметр2, …) — выводит результат на экран

$result=sprintf(«..», .., .., …) — тоже самое, только строка не выводиться, а помещается в $result

Цитата из перевода мануала (ПРИМЕРЫ ниже :-) :


sprintf

sprintf — возвращает форматированную строку

Описание

sprintf(string format, mixed [args]…);

Возвращает строку, обрабатываемую в соответствии с форматирующей строкой format.

Форматирующая строка, содержащая ноль или более директив: обычные символы (кроме %) которые копируются прямо в результат, и that are copied directly to the result, и описания изменений, каждое из которых выполняет определенные действия. Это применительно и к sprintf() и к printf()

Каждое описание изменений состоит из следующих элементов, в порядке:

  1. Дополнительный описатель заполнения, который говорит, какие символы будут использоваться для заполнения результата до правильног размера строки. Это могут быть пробелы или 0 (символ нуля). По умолчанию заполняется пробелами. Алтернативный символ заполнения может быть определен одинарной кавычкой ('). См. примеры ниже.
  2. Дополнительный описатель выравнивания , который говорит, что результат должен быть выравнен по левому или по правому краю. По умолчанию выравнивание происходит по правому краю; символ - приведет к вырвниванию по левому краю.
  3. Дополнительный описатель ширины, который говорит, с каким количеством символов (минимум) пожет производится данная замена.
  4. Дополнительный описатель точности, который говорит, сколько десятичных знаков следует отображать для чисел с плавающей точкой. Этот описатель не действует на остальные типы, кроме double. (другая полезная функция для форматирования чисел это number_format().)
  5. Описатель типа, который говорит о том, как тип данных аргумента должен трактоваться. Возможные типы:
    % — символ процента. Аргумент не требуется.
    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://www.php.su/articles/?cat=vars&page=003

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты