sprintf
(PHP 3, PHP 4 , PHP 5)
sprintf -- Returner en formateret streng
Beskrivelse
string
sprintf ( string format [, mixed args])
Returnerer en streng produceret af specifikationerne givet i
format.
Formateringsstrengen bliver dannet af ingen eller flere direktiver:
ordinære tegn (eksklusiv %) som bliver kopieret
direkte til resultatet og
konverteringsspecifikationer, hvert resulterer i at
fange dets eget parameter. Dette gælder for både
sprintf() og printf().
Hver konverteringspecifikation består af et procenttegn
(%), fulgt af et eller flere af disse elementer, i
rækkefølge:
En valgfri padding specifier som fortæller
hvilken karakter der skal bruges til at udfylde resultaterne til den
korrekte strengstørrelse. Der kan bruges et mellemrum eller et
0 (nultegn). Standarden er at udfylde med
mellemrum. Et alternativ udfyldningstegn kan blive specificeret ved
præfikse dem med et enkelt citationstegn ('). Se
eksemplerne herunder.
En valgfrialignment specifier som siger om
resultatet skal være venstrestillet eller højrestillet.
Standarden er højrestillet; et - tegn her vil gøre
det venstrestillet.
Et valgfrit tal, en width specifier som fortæller
hvor mange tegn (minimum) denne konvertering skal resultere i.
En valgfri precision specifier som fortæller hvor
mange decimalcifre der skal vises som flydende decimalnumre. Når man
bruger specifier på en streng, opfører den sig som et afskæringspunkt,
der sætter den maksimale tegngrænse på strengen.
En type specificerer som fortæller hvilken type
parameterdataene skal behandles som. Mulige typer:
% - et procenttegn. Intet parameter er påkrævet.
|
b - parametret bliver behandlet som et heltal og
præsenteret som et binært tal.
|
c - parametret bliver behandlet som et heltal og
præsenteret som et tegn med den ASCII-værdi.
|
d - parametret bliver behandlet som et heltal og
præsenteret som et (signeret) decimaltal.
|
e - parametret bliver behandlet som et
videnskabeligt tegnsystem (eks. 1.2e+2).
|
u - parametret bliver behandlet som et heltal og
præsenteret som et usigneret decimaltal.
|
f - parametret bliver behandlet som et
float, og præsenteret som et flydende decimaltal.
|
o - parametret bliver behandlet som et heltal og
præsenteret som et oktaltal.
|
s - parametret bliver behandlet og præsenteret
som en streng.
|
x - parametret bliver behandlet som et heltal og
præsenteret som et hexadecimaltal (med små bogstaver).
|
X - parametret bliver behandlet som et heltal og
præsenteret som et hexadecimaltal (med store bogstaver).
|
Siden PHP 4.0.6 understøtter formateringsstrengen
parameternummering/ombytning. Her er et eksempel:
Eksempel 1. Parameterombytning
<?php $format = "Der er %d aber i %s"; printf($format, $num, $location); ?>
|
|
Dette kunne udskrive, "Der er 5 aber i træet". Men forestil dig at vi
skaber en formateringsstreng i en seperat fil, sædvanligvis fordi vi
ville internationalisere den og omskrive den således:
Eksempel 2. Parameterombytning
<?php $format = "%s indeholder %d aber"; printf($format, $num, $location); ?>
|
|
Vi har nu et problem. Rækkefølgen af pladsholderne i formateringsstrengen
matcher ikke rækkefølgen på parametrene i koden. Vi kunne godt tænke os
at efterlade koden som den er og simpelthen indikere i
formateringsstrengen hvilke parametre pladsholderne skal referere til. Vi
ville skrive formateringsstrengen sådan her i stedet:
Eksempel 3. Parameterombytning
<?php $format = "%2\$s indeholder %1\$d aber"; printf($format, $num, $location); ?>
|
|
En tilføjet fordel her er at du kan gentage pladsholderne uden af tilføje
flere argumenter i koden. For eksempel:
Eksempel 4. Parameterombytning
<?php $format = "%2\$s indeholder %1\$d aber. Det er et rart %2\$s fuldt af %1\$d aber."; printf($format, $num, $location); ?>
|
|
Se også
printf(),
sscanf(),
fscanf(),
vsprintf(), og
number_format().
Eksempler
Eksempel 5. printf(): forskellige eksempler
<?php $n = 43951789; $u = -43951789; $c = 65; // ASCII 65 er 'A'
// bemærk de dobbelte %%, de udkskriver et enkelt '%' printf("%%b = '%b'\n", $n); // binær præsentation printf("%%c = '%c'\n", $c); // print asciitegnet, samme som chr() function printf("%%d = '%d'\n", $n); // standard heltalspræsentation printf("%%e = '%e'\n", $n); // videnskabelig tegnsætning printf("%%u = '%u'\n", $n); // usigneret heltalspræsentation af et positivt heltal printf("%%u = '%u'\n", $u); // usigneret heltalspræsentation af et negativt heltal printf("%%f = '%f'\n", $n); // kommatalspræsentation printf("%%o = '%o'\n", $n); // oktal præsentation printf("%%s = '%s'\n", $n); // strengpræsentation printf("%%x = '%x'\n", $n); // hexadecimal præsentation (små bogstaver) printf("%%X = '%X'\n", $n); // hexadecimal præsentation (store bogstaver) ?>
|
Resultatet af dette program ville være:
%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'
+ |
|
Eksempel 6. printf(): strengspecifikatorer
<?php $s = 'abe'; $t = 'rigtigt mange aber';
printf("[%s]\n", $s); // standard strengudskrift printf("[%10s]\n", $s); // højrestillet med mellemrum printf("[%-10s]\n", $s); // venstrestillet med mellemrum printf("[%010s]\n", $s); // nuludfyldning virker også på strenge printf("[%10.10s]\n", $t); // venstrestillet, men afskåret ved 10 tegn ?>
|
Resultatet af dette program ville være:
[abe]
[ abe]
[abe ]
[0000000abe]
[rigtige ma] |
|
Eksempel 7. sprintf(): nuludfyldte heltal
<?php $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day); ?>
|
|
Eksempel 8. sprintf(): formater valuta
<?php $money1 = 68.75; $formatted = sprintf("%01.2f", $money1); // echo $formatted ville udskrive "123.10" ?>
|
|
Eksempel 9. sprintf(): videnskabeligt tegnsystem
<?php $number = 362525200; echo sprintf("%.3e", $number); // udskriver 3.63e+8 ?>
|
|