sprintf
(PHP 4, PHP 5)
sprintf — Geeft een geformatteerde string weer
Beschrijving
string sprintf
( string $format
[, mixed $args
] )
Geeft een string weer die geproduceerd is volgens de formatting string
format
.
De format string bestaat uit nul of meer directives:
normale karakters (uitgezonderd %) die
rechtstreeks gekopieerd worden naar het resultaat, en
conversie specificaties, die elk resulteren
in het opvangen van zijn eigen parameter. Dit is van toepassing
op sprintf() als wel printf().
Elke conversie specificatie bestaat uit een procent teken
(%), gevolgd door een of meer van deze
elementen, in volgorde:
-
Een optionele padding specifier die
bepaalt welk karakter er wordt gebruikt voor het padden
van de resultaten naar de correcte string lengte.
Dit kan een space karakter of een 0 (nul
karakter) zijn. Een afwisselend padding karakter kan gespecificeerd
worden door een enkele quote (') mee te geven.
Zie de voorbeelden hieronder.
-
Een optionele alignment specifier die vertelt
of het resultaat links of rechts uitgelijnd moet worden.
De default is rechts uitgelijnd; een - karakter
kan gebruikt worden voor het links uitlijnen.
-
Een optioneel nummer, een width specifier
die vertelt hoeveel karakters (minimaal) in moet resulteren.
-
Een optionele precision specifier die vertelt
hoeveel decimale cijfers er moeten weergegeven voor floating-point
getallen. Deze optie heeft geen effect op andere types dan double.
(Een andere functie die nuttig is voor het formatteren van nummers
is number_format().)
-
Een type specifier die vertelt volgens welk
type de argument data moet behandeld worden. Mogelijke types:
-
% - een literal procent karakter. Geen
argument nodig.
-
b - het argument wordt behandeld als een
integer, en gepresenteerd als een binair getal.
-
c - het argument wordt behandeld als een
integer, en gepresenteerd als het karakter met die ASCII waarde.
-
d - het argument wordt behandeld als een
integer, en gepresenteerd als een decimaal nummer.
-
f - het argument wordt behandeld als een double,
en wordt gepresenteerd als een floating point nummer.
-
o - het argument wordt behandeld als een
integer, and gepresenteerd als een octaal nummer.
-
s - het argument wordt behandeld als en
gepresenteerd als een string.
-
x - het argument wordt behandeld als een integer
en gepresenteerd als een hexadecimal number (met kleine
letters).
-
X - het argument wordt behandeld als een integer
en gepresenteerd als een hexadecimaal nummer (met hoofdletters).
Sinds PHP 4.0.6 wordt argument nummering/swapping ondersteund in de
format string. Hier is een voorbeeld:
Example#1 Argument swapping
$format = "Er zijn %d apen in de %s";
printf($format,$num,$plaats);
Dit zou bijvoobeeld "Er zijn 5 apen in de boom" kunnen printen. Maar stel
nou dat we de format strings in een apart bestand zetten, bijvoorbeeld
omdat we het willen internationalizeren en we herschrijven het als:
Example#2 Argument swapping
$format = "In de %s zitten %d apen";
printf($format,$num,$plaats);
Nu hebben we een probleem. De volgorde van de placeholders in de format
string komt niet overeen met de volgorde van de argumenten. We willen de
code ongewijzigd houden en simpelweg aangeven naar welke argumenten de
placeholders verwijzen. We kunnen dan de format string als volgt
schrijven:
Example#3 Argument swapping
$format = "In de %2\$s zitten %1\$d apen";
printf($format,$num,$plaats);
En bijkomend voordeel is dat je de placeholders kan herhalen zonder meer
argumenten in de code toe te voegen. Bijvoorbeeld:
Example#4 Argument swapping
$format = "In de %2\$s zitten %1\$d apen.
Dat is een mooie %2\$s vol met %1\$s apen.";
printf($format,$num,$plaats);
Zie ook: printf(), sscanf(),
fscanf(), en number_format().
Voorbeelden
Example#5 sprintf(): nul-padded integers
$isodate = sprintf("%04d-%02d-%02d", $jaar, $maand, $dag);
Example#6 sprintf(): formatteren van valuta-eenheden
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money zal geven "123.1";
$formatted = sprintf ("%01.2f", $money);
// echo $formatted zal geven "123.10"