Функции за низове
PHP Manual

sprintf

(PHP 4, PHP 5)

sprintfВръща форматиран низ

Описание

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

Връща низ, създаден посредством форматиращ низ format .

Параметри

format

Низът за форматиране е съставен от нула или повече директиви: нормални знаци (с изключение на %), които директно се копират в резултатния низ и описатели на преобразуването, като всеки от тях се заменя с един параметър. Това важи и за функция sprintf() и за функция printf().

Всеки описател на преобразуването се състои от знак за процент (%), последван от един или повече от следните елементи в указаната последователност:

  1. Незадължителен описател на знака, който задължава използването на знак (- или +) за числата. По подразбиране се използва само знака минус при числата, ако те са отрицателни. Този описател задължава положителните числа да имат знак плюс и беше добавен в PHP 4.3.0.
  2. Незадължителен описател на уплътнението, който указва кой знак ще бъде използван за уплътнение на резултата до размера на съответния низ. Това може да е знак за интервал или 0 (нула). По подразбиране уплътнението се извършва с интервали. Алтернативен знак за уплътнение може да бъде указан, като се сложи пред него единична кавичка ('). Вижте примера по-долу.
  3. Незадължителен описател на подравняването, който указва дали резултатът ще бъде ляво подравнен или дясно подравнен. По подразбиране подравняването е дясно; Знакът - ще го направи ляво подравнен.
  4. Незадължително число, описател на дължината, което указва до колко знака (минимум) ще бъде преобразуването.
  5. Незадължителен описател на точността, който указва колко десетични знака ще бъдат показани при числа с плаваща запетая. Използването на този описател при низове указва точката на прекъсване, дефинирайки максималната дължина в брой знакове.
  6. Описател на типа, определящ като какъв тип ще се разглеждат данните на аргумента. Допустимите типове са:

    • % - знак за процент. Аргументът не се използва.
    • b - аргументът се разглежда като цяло число, а се представя във вид на двоично число.
    • c - аргументът се разглежда като цяло число, а се представя във вид на символ със ASCII стойността на цялото число.
    • d - аргументът се разглежда като цяло число, а се представя във вид на десетично число със знак.
    • e - аргументът се разглежда като число в научна нотация (например 1.2e+2). От PHP 5.2.1, описателят на точността представлява броя на цифрите след десетичната запетая. В по-ранни версии, той представлява броя на значещите цифри (с една по-малко).
    • u - аргументът се разглежда като цяло число, а се представя във вид на десетично число без знак.
    • f - аргументът се разглежда като число с плаваща запетая и се представя като число с плаваща запетая (в зависимост от локала).
    • F - аргументът се разглежда като число с плаваща запетая и се извежда като число с плаваща запетая (без значение на локала). Достъпно от PHP 4.3.10 и PHP 5.0.3.
    • o - аргументът се разглежда като цяло число, а се извежда във вид на осмично число.
    • s - аргументът се разглежда и представя като низ.
    • x - аргументът се разглежда като цяло число, а се представя във вид на шестнадесетично число (с букви в долен регистър).
    • X - аргументът се разглежда като цяло число, а се извежда във вид на шестнадесетично число (с букви в горен регистър).

Низът за форматиране поддържа номериране (промяна на реда) на параметрите. Ето един пример:

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);
?>

args

...

Връщани стойности

Връща низ, създаден на базата на форматиращия низ 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
?>

Вж. също


Функции за низове
PHP Manual