(PHP 4, PHP 5, PHP 7)
sprintf — Gibt einen formatierten String zurück
Gibt eine anhand des Formatierungs-Strings format
gebildete Zeichenkette zurück.
format
Der Formatierungs-String wird aus null oder mehreren Anweisungen gebildet: Gewöhnliche Zeichen (außer %), die direkt in das Ergebnis übertragen werden, und Umsetzungs-Anweisungen. Jede dieser Anweisungen holt sich als Resultat ihre eigenen Parameter. Diese Anweisungen gelten sowohl für die sprintf()- als auch für die printf()-Funktion.
Jede der Formatierugs-Anweisungen besteht aus einem Prozent-Zeichen (%), gefolgt von einem oder mehrereren der folgenden Elemente:
Eine Typangabe, welche den Typ enthält, als der das jeweils übergebene Argument angesehen werden soll. Mögliche Angaben sind:
Variablen werden in einen für die Typangabe passenden Typ konvertiert:
Typ | Typangaben |
---|---|
string | s |
integer | d, u, c, o, x, X, b |
double | g, G, e, E, f, F |
Der Versuch der Verwendung einer Kombination von Stringtyp- und Längenangaben bei Zeichensätzen, die mehr als ein Byte pro Zeichen benötigen, kann zu unerwarteten Ergebnissen führen
Der Formatstring unterstützt nummerierte Argumente und kann daher auch ihre Position bestimmen (argument numbering/swapping). Hier ein Beispiel:
Beispiel #1 Argumente tauschen
<?php
$anzahl = 5;
$ort = 'Baum';
$format = 'Es sind %d Affen auf dem %s';
echo sprintf($format, $anzahl, $ort);
?>
Beispiel #2 Argumente tauschen
<?php
$format = 'Der %s enthält %d Affen';
echo sprintf($format, $anzahl, $ort);
?>
Beispiel #3 Argumente tauschen
<?php
$format = 'Der %2$s enthält %1$d Affen';
echo sprintf($format, $anzahl, $ort);
?>
Beispiel #4 Argumente tauschen
<?php
$format = 'Der %2$s enthält %1$d Affen.
%1$d Affen sind ziemlich viel für einen %2$s.';
echo sprintf($format, $anzahl, $ort);
?>
Beispiel #5 Angabe von Füllzeichen
<?php
echo sprintf("%'.9d\n", 123);
echo sprintf("%'.09d\n", 123);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
......123 000000123
Beispiel #6 Positionstausch mit weiteren Spezifikatoren
<?php
$format= 'Der %2$s enthält %1$04d Affen';
echo sprintf($format, $anzahl, $ort);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Der Baum enthält 0005 Affen.
Hinweis:
Der Versuch der Verwendung einer Positionsangabe, die größer als
PHP_INT_MAX
ist, hat zur Folge, dass sprintf() Warnungen erzeugt.
Die c-Typangabe ignoriert Füllzeichen und Längenangabe
args
...
Gibt eine an Hand des Formatierungs-Strings format
gebildete Zeichenkette zurück.
Beispiel #7 printf(): Verschiedene Beispiele
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII 65 is 'A'
// Beachten Sie das doppelte %%, dies gibt ein '%'-Zeichen aus
printf("%%b = '%b'\n", $n); // Binärdarstellung
printf("%%c = '%c'\n", $c); // print the ascii character, same as chr() function
printf("%%d = '%d'\n", $n); // Standard-Integerdarstellung
printf("%%e = '%e'\n", $n); // Wissenschaftliche Notation
printf("%%u = '%u'\n", $n); // vorzeichenlose Integerdarstellung einer positiven Zahl
printf("%%u = '%u'\n", $u); // vorzeichenlose Integerdarstellung einer negativen Zahl
printf("%%f = '%f'\n", $n); // Fließkommazahldarstellung
printf("%%o = '%o'\n", $n); // Oktaldarstellung
printf("%%s = '%s'\n", $n); // Stringdarstellung
printf("%%x = '%x'\n", $n); // Hexadezimaldarstellung (Kleinbuchstaben)
printf("%%X = '%X'\n", $n); // Hexadezimaldarstellung (Großbuchstaben)
printf("%%+d = '%+d'\n", $n); // Vorzeichenangabe für positive Integerzahlen
printf("%%+d = '%+d'\n", $u); // Vorzeichenangabe für negative Integerzahlen
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
%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'
Beispiel #8 printf(): Stringformatierung
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // normale rechtsbündige Ausgabe
printf("[%10s]\n", $s); // rechtsbündige Ausgabe, mit Leerzeichen aufgefüllt
printf("[%-10s]\n", $s); // linksbündige Ausgabe, mit Leerzeichen aufgefüllt
printf("[%010s]\n", $s); // auffüllen mit Nullen funktioniert auch bei Strings
printf("[%'#10s]\n", $s); // Verwendung des benutzerdefinierten Auffüllzeichens '#'
printf("[%10.10s]\n", $t); // linksbündige Ausgabe mit abschneiden überflüssiger
// Buchstaben nach der zehnten Stelle
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [many monke]
Beispiel #9 sprintf(): Mit Nullen aufgefüllte Integer
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Beispiel #10 sprintf(): Währungsformatierung
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money gibt "123.1" aus
$formatted = sprintf("%01.2f", $money);
// echo $formatted gibt "123.10" aus
?>
Beispiel #11 sprintf(): Wissenschaftliche Notation
<?php
$number = 362525200;
echo sprintf("%.3e", $number); // Ausgabe 3.625e+8
?>