(PHP 4, PHP 5)
sprintf — Връща форматиран низ
Връща низ, създаден посредством форматиращ низ format .
Низът за форматиране е съставен от нула или повече директиви: нормални знаци (с изключение на %), които директно се копират в резултатния низ и описатели на преобразуването, като всеки от тях се заменя с един параметър. Това важи и за функция sprintf() и за функция printf().
Всеки описател на преобразуването се състои от знак за процент (%), последван от един или повече от следните елементи в указаната последователност:
Описател на типа, определящ като какъв тип ще се разглеждат данните на аргумента. Допустимите типове са:
Низът за форматиране поддържа номериране (промяна на реда) на параметрите. Ето един пример:
Example #1 Промяна на реда на параметрите
<?php
$format = 'There are %d monkeys in the %s';
printf($format, $num, $location);
?>
Това може да изведе "There are 5 monkeys in the tree". Но представете си, че създаваме форматиращият низ в отделен файл, обикновено защото искаме да го интернационализираме и го презаписваме в следния вид:
Example #2 Промяна на реда на параметрите
<?php
$format = 'The %s contains %d monkeys';
printf($format, $num, $location);
?>
Възникна проблем. Редът на полетата във форматиращият низ не съвпада с реда на параметрите в кода. Бихме искали да оставим кода както си е и просто да укажем във форматиращия низ за кое поле е съответният параметър. Следователно бихме могли да напишем форматиращият низ по следния начин:
Example #3 Промяна на реда на параметрите
<?php
$format = 'The %2$s contains %1$d monkeys';
printf($format, $num, $location);
?>
Другото предимство на този метод е, че можем да повтаряме полетата без да добавяме повече параметри в кода. Например:
Example #4 Промяна на реда на параметрите
<?php
$format = 'The %2$s contains %1$d monkeys.
That\'s a nice %2$s full of %1$d monkeys.';
printf($format, $num, $location);
?>
Връща низ, създаден на базата на форматиращия низ format .
Версия | Описание |
---|---|
4.0.6 | Добавена е поддръжка на номериране (промяна на реда) на аргументите |
Example #5 printf(): разни примери
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII 65 е равно на 'A'
// забележете двойният %%, който извежда знака '%'
printf("%%b = '%b'\n", $n); // двоично представяне
printf("%%c = '%c'\n", $c); // извежда ASCII знака, по същия начин като функцията chr()
printf("%%d = '%d'\n", $n); // стандартно целочислено представяне
printf("%%e = '%e'\n", $n); // научна нотация
printf("%%u = '%u'\n", $n); // без знаково целочислено представяне на положително цяло число
printf("%%u = '%u'\n", $u); // без знаково целочислено представяне на отрицателно цяло число
printf("%%f = '%f'\n", $n); // представяне като число с плаваща запетая
printf("%%o = '%o'\n", $n); // осмично представяне
printf("%%s = '%s'\n", $n); // представяне като низ
printf("%%x = '%x'\n", $n); // шестнадесетично представяне (долен регистър)
printf("%%X = '%X'\n", $n); // шестнадесетично представяне (горен регистър)
printf("%%+d = '%+d'\n", $n); // указател на знака на положително цяло число
printf("%%+d = '%+d'\n", $u); // указател на знака на отрицателно цяло число
?>
Примерът по-горе ще изведе:
%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'
Example #6 printf(): указатели на низа
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // стандартно извеждане на низ
printf("[%10s]\n", $s); // подравняване в дясно и уплътняване с интервали
printf("[%-10s]\n", $s); // подравняване в ляво и уплътняване с интервали
printf("[%010s]\n", $s); // уплътняване с нули работи и при низове
printf("[%'#10s]\n", $s); // използване на различен знак за уплътняване '#'
printf("[%10.10s]\n", $t); // подравняване в ляво с отрязване на низа до 10-тия знак
?>
Примерът по-горе ще изведе:
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [many monke]
Example #7 sprintf(): допълване с нули
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Example #8 sprintf(): форматиране на валута
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money ще изведе "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted ще изведе "123.10"
?>
Example #9 sprintf(): научна нотация
<?php
$number = 362525200;
echo sprintf("%.3e", $number); // извежда 3.625e+8
?>