(PHP 4, PHP 5, PHP 7)
sprintf — Return a formatted string
Returns a string produced according to the formatting string
format
.
format
Șirul de formatare este compus din zero sau mai multe directive: caractere
obișnuite (în afară de %
), care sunt copiate direct
în rezultat și specificatori de conversie, fiecare
având parametrul său.
Un specificator de conversie e compus după următorul prototip:
%[argnum$][flags][width][.precision]specifier
.
Un întreg urmat de senmul dolar $
,
pentru a specifica ce argument de număr trebuie tratat în conversie.
Flag | Descriere |
---|---|
- |
Alinierea spre stânga în limitele lungimii câmpului; Implicit se efectuează alinierea spre dreapta |
+ |
Prefixează numerele pozitive cu semnul plus
+ ; implicit doar numerele negative sunt prefixate cu
semnul minus.
|
(spațiu) |
Completează rezultatul cu spații. Acesta este comportamentul implicit. |
0 |
Completează numerele cu zerouri în stânga.
Cu specificatorii s se poate de completat cu zerouri
și în dreapta.
|
' (char) |
Completează rezultatul cu caracterul (char). |
Un număr întreg ce indică câte caractere (minimum) trebuie să aibă rezultatul conversiei.
Un punct .
, urmat de un număr întreg, însemnătatea căruia
depinde de specificator:
e
, E
,
f
și F
: acesta este numărul de cifre
ce vor fi tipărite după punctul zecimal (implicit acesta este 6).
g
și G
:
acesta este numărul maxim de cifre semnificative ce va fi tipărit.
s
: acesta funcționează ca punct
de oprire, stabilind limita maximă a numărului de caractere din șir.
Notă: Dacă punctul este specificat fără o valoare explicită pentru precizie, se presupune că aceasta este 0.
Notă: Încercarea de a folosi un specificator de poziție mai mare decât
PHP_INT_MAX
va genera avertizări.
Specifier | Descriere |
---|---|
% |
Specifică caracterul procent. Nu este necesar vre-un argument. |
b |
Argumentul este tratat ca un întreg și prezentat ca număr binar. |
c |
Argumentul este tratat ca un întreg și prezentat ca caracter cu acest cod ASCII. |
d |
Argumentul este tratat ca un întreg și prezentat ca număr zecimal (cu semn). |
e |
Argumentul este tratat ca număr în notație exponențială (de ex. 1.2e+2). Specificatorul de precizie semnifică numărul de cifre după virgulă începând cu PHP 5.2.1. În versiuni anterioare el specifica numărul de cifre semnificative (cu una mai puțin). |
E |
La fel ca și specificatorul e , dar folosește
caracterul majuscul (de ex. 1.2E+2).
|
f |
Argumentul este tratat ca număr cu virgulă și prezentat ca atare (în dependență de setările de localizare). |
F |
Argumentul este tratat ca număr cu virgulă și prezentat ca atare (fără a se ține cont de setările de localizare). Disponibil începând cu PHP 5.0.3. |
g |
Format general. Fie că P este egal cu precizia, dacă nu este zero, 6 dacă precizia este omisă, sau 1 dacă precizia este zero. Atunci dacă o conversie cu stilul E ar avea un exponent X: Dacă P > X ≥ −4, atunci conversia este de stilul f și precizia P − (X + 1). În caz contrar, conversia este de stilul e și precizia P − 1. |
G |
La fel ca și specificatorul g , dar utilizează
E și f .
|
o |
Argumentul este tratat ca întreg și prezentat ca număr octal. |
s |
Argumentul este tratat și prezentat ca șir de caractere. |
u |
Argumentul este tratat ca întreg și prezentat ca număr zecimal fără semn. |
x |
Argumentul este tratat ca întreg și prezentat ca număr hexazecimal (cu caractere minuscule). |
X |
Argumentul este tratat ca întreg și prezentat ca număr hexazecimal (cu caractere majuscule). |
Specificatorul de tip c
ignoră completarea cu spații și lungimea
Încercarea de a folosi o combinație din specificatori de șiruri de caractere și lungime cu seturi de caractere ce necesită mai mult de un octet per caracter poate da rezultate imprevizibile
Variabilele vor fi aduse la un tip potrivit pentru specificatorul:
Tipul | Specificatorii |
---|---|
string |
s |
integer |
d ,
u ,
c ,
o ,
x ,
X ,
b
|
double |
g ,
G ,
e ,
E ,
f ,
F
|
values
Returns a string produced according to the formatting string
format
.
Versiune | Descriere |
---|---|
8.0.0 |
This function no longer returns false on failure.
|
Example #1 Argument swapping
The format string supports argument numbering/swapping.
<?php
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
?>
Exemplul de mai sus va afișa:
There are 5 monkeys in the tree
However imagine we are creating a format string in a separate file, commonly because we would like to internationalize it and we rewrite it as:
<?php
$format = 'The %s contains %d monkeys';
echo sprintf($format, $num, $location);
?>
We now have a problem. The order of the placeholders in the format string does not match the order of the arguments in the code. We would like to leave the code as is and simply indicate in the format string which arguments the placeholders refer to. We would write the format string like this instead:
<?php
$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location);
?>
An added benefit is that placeholders can be repeated without adding more arguments in the code.
<?php
$format = 'The %2$s contains %1$d monkeys.
That\'s a nice %2$s full of %1$d monkeys.';
echo sprintf($format, $num, $location);
?>
When using argument swapping, the n$
position specifier must come immediately
after the percent sign (%
), before any other
specifiers, as shown below.
Example #2 Specifying padding character
<?php
echo sprintf("%'.9d\n", 123);
echo sprintf("%'.09d\n", 123);
?>
Exemplul de mai sus va afișa:
......123 000000123
Example #3 Position specifier with other specifiers
<?php
$format = 'The %2$s contains %1$04d monkeys';
echo sprintf($format, $num, $location);
?>
Exemplul de mai sus va afișa:
The tree contains 0005 monkeys
Example #4 sprintf(): zero-padded integers
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Example #5 sprintf(): formatting currency
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
echo $money;
echo "\n";
$formatted = sprintf("%01.2f", $money);
echo $formatted;
?>
Exemplul de mai sus va afișa:
123.1 123.10
Example #6 sprintf(): scientific notation
<?php
$number = 362525200;
echo sprintf("%.3e", $number);
?>
Exemplul de mai sus va afișa:
3.625e+8