|
|
sprintf
Gibt einen formatierten String zurück
Beschreibung
string sprintf
( string $format
[, mixed $args
[, mixed $...
]] )
Parameter-Liste
-
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 Formatierungs-Anweisungen besteht aus einem
Prozent-Zeichen (%), gefolgt von einem oder mehrereren
der folgenden Elemente:
-
Eine optionale Vorzeichenangabe, die die
Verwendung eines Vorzeichens (- oder +) vor einer Zahl erzwingt.
Standardmäßig wird nur das - Zeichen vor negativen Zahlen verwendet.
Die Vorzeichenangabe erzwingt, dass positive Zahlen ein + Zeichen
vorangestellt bekommen, und wurde mit PHP 4.3.0 eingeführt.
-
Ein optionales Füllzeichen, das festlegt, mit
welchem Zeichen ein String bis zum Erreichen einer bestimmten Länge
aufgefüllt wird. Dies kann ein Leerzeichen oder eine
0 (das Null-Zeichen) sein. Standardmäßig wird
mit dem Leerzeichen gefüllt. Andere Füllzeichen können durch
Voranstellen eines einfachen Anführungszeichens (')
definiert werden. Beachten Sie die nachstehenden Beispiele.
-
Eine optionale Angabe der Ausrichtung, die
bestimmt, ob das Ergebnis rechts- oder linksbündig ausgerichtet werden
soll. Das Standardverhalten ist rechtsbündige Ausrichtung, ein
--Zeichen an dieser Stelle lässt den Text
linksbündig erscheinen.
-
Eine optionale Zahl für die Längenangabe,
welche die mindestens zurückzugebende Anzahl Zeichen spezifiziert.
-
Eine optionale Genauigkeitsangabe in der Form
eines Punktes (.) gefolgt von einem optionalen Dezimalstring. Dieser
drückt aus, wieviele Dezimalstellen für Fließkommazahlen ausgegeben
werden sollten. Wenn Sie diese Angabe auf einen String anwenden,
fungiert sie als Grenzpunkt, der die maximale Zeichenzahl der
ausgegebenen Zeichenkette bestimmt. Zusätzlich kann optional das
Zeichen, das zum Auffüllen einer Zahl verwendet werden soll, zwischen
dem Punkt und der Ziffer angegeben werden.
-
Eine Typangabe, welche den Typ enthält,
als der das jeweils übergebene Argument angesehen werden soll.
Mögliche Angaben sind:
-
% - ein Prozentzeichen. Es ist kein
Argument erforderlich.
-
b - das Argument wird als Integer
angesehen und als Binär-Wert ausgegeben.
-
c - das Argument wird als Integer
angesehen, und das entsprechende ASCII-Zeichen wird
ausgegeben.
-
d - das Argument wird als Integer
angesehen und als vorzeichenbehafteter Dezimalwert
(signed integer) ausgegeben.
-
e - das Argument wird als wissenschaftliche
Notation betrachtet (z.B. 1.2e+2). Die Genauigkeitsangabe steht
seit PHP 5.2.1 für die Anzahl der Dezimalstellen. In früheren
PHP-Versionen wurde sie als signifikante Stelle betrachtet (eine
Stelle weniger).
-
E - wie %e, mit dem Unterschied,
dass ein großes E verwendet wird (z.B. 1.2E+2).
-
f - das Argument wird als float angesehen und
entsprechend der Einstellungen in den locales als Fließkommazahl
ausgegeben.
-
F - das Argument wird als float angesehen und
unabhängig von den Einstellungen in den locales als Fließkommazahl
ausgegeben.
Verfügbar ab PHP 4.3.10 und PHP 5.0.3.
-
g - das Kürzere von %e und
%f.
-
G - das Kürzere von %E und
%f.
-
o - das Argument wird als Integer
angesehen und als Oktalzahl ausgegeben.
-
s - das Argument wird als String angesehen
und auch als solcher ausgegeben.
-
u - das Argument wird als Integer
angesehen und ein positiver vorzeichenloser Dezimalwert (unsigned
integer) ausgegeben.
-
x - das Argument wird als Integer
angesehen und als Hexadezimalwert ausgegeben (mit
Kleinbuchstaben).
-
X - das Argument wird als Integer
angesehen und als Hexadezimalwert ausgegeben (mit
Großbuchstaben).
Variablen werden in einen für die Typangabe passenden Typ konvertiert:
Typ-Behandlung
| Typ |
Typangaben |
| string |
s |
| integer |
d,
u,
c,
o,
x,
X,
b
|
| double |
g,
G,
e,
E,
f,
F
|
Warnung
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); ?>
Dies wird "Es sind 5 Affen auf dem Baum" ausgeben. Aber nehmen
wir einmal an, dass wir den Formatstring in einer separaten Datei
erstellen, da wir ihn internationalisieren wollen und deshalb wie
folgt umschreiben:
Beispiel #2 Argumente tauschen
<?php $format = 'Der %s enthält %d Affen'; echo sprintf($format, $anzahl, $ort); ?>
Nun haben wir ein Problem. Die Reihenfolge der Platzhalter im
Formatstrings entspricht nicht mehr der Reihenfolge der Argumente im
Code. Wir würden gern den Code belassen wie er ist und einfach im
Formatstring angeben, welche Argumenten welchen Platzhaltern entsprechen.
Wir würden dann den Formatstring wie folgt schreiben:
Beispiel #3 Argumente tauschen
<?php $format = 'Der %2$s enthält %1$d Affen'; echo sprintf($format, $anzahl, $ort); ?>
Ein weiterer Vorteil ist, dass wir nun die Platzhalter wiederholen
können, ohne mehr Argumente im Code hinzufügen zu müssen. Zum Beispiel:
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); ?>
Wenn Argumenttausch verwendet wird muss die n$
Positionsangabe
direkt nach dem Prozentzeichen (%) folgen, vor
jeglichen anderen Angaben, wie im Beispiel unten zu sehen ist.
Beispiel #5 Angabe von Füllzeichen
<?php echo sprintf("%'.9d\n", 123); echo sprintf("%'.09d\n", 123); ?>
Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:
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.
Warnung
Die c-Typangabe ignoriert Füllzeichen und Längenangabe
-
args
-
-
...
-
Rückgabewerte
Gibt eine an Hand des Formatierungs-Strings format
gebildete Zeichenkette zurück.
Beispiele
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 ?>
Siehe auch
- printf
- sscanf
- fscanf
- vsprintf
- number_format
|