Forum und email

sprintf

(PHP 4, PHP 5)

sprintf — Gibt einen formatierten String zurück

Beschreibung:

string sprintf ( string $format [, mixed $args ] )

Gibt einen an Hand des Formatierungs-Strings format gebildeten String zurück.

Der Formatierungs-String wird aus keiner oder mehreren Anweisungen gebildet: Gewöhnliche Zeichen (ausser %), 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:

  1. Einem optionalen Füll-Zeichen, das den String bis rechts auffüllt. 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.
  2. Einer optionalen Angabe der Ausrichtung, ob die Ausgabe nach links oder nach rechts (default) ausgerichtet werden soll. Standardmäßig ist die Ausrichtung rechtsbündig. Um den Text linksbündig auszurichten müssen Sie das Zeichen - angeben.
  3. Einer optionalen Zahl für die Längen-Angabe, welche die mindestens zurückzugebende Anzahl Zeichen spezifiziert.
  4. Einem optionalen Wert für die Anzahl der auszugebenden Dezimalstellen für Fließkommazahlen. Dieser Wert hat nur Einfluss auf Werte vom Typ float (eine weitere hilfreiche Funktion zur Formatierung von Zahlen ist number_format()).
  5. Einer Typ-Angabe welche den Typ enthält, als der das Argument angesehen werden soll. Mögliche Angaben sind:

    • % - ein Prozent-Zeichen ("%"). 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 ein Dezimalwert (signed) ausgegeben.
    • u - das Argument wird als Integer angesehen und ein Dezimalwert (unsigned) ausgegeben.
    • f - das Argument wird als float angesehen und eine Fließkomma-Zahl ausgegeben.
    • o - das Argument wird als Integer angesehen und und als Oktalzahl ausgegeben.
    • s - das Argument wird als String angesehen und auch als solcher ausgegeben.
    • x - das Argument wird als Integer angesehen und als Hexadezimal-Wert ausgegeben (mit Kleinbuchstaben).
    • X - das Argument wird als Integer angesehen und als Hexadezimal-Wert ausgegeben (mit Großbuchstaben).

Seit PHP 4.0.6 unterstützt der Formatstring auch Argumente zu numerieren/tauschen. Hier ein Beispiel:

Example#1 Argumente tauschen

$format = "There are %d monkeys in the %s";
printf($format,$num,$location);
Dies könnte "There are 5 monkeys in the tree" 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:

Example#2 Argumente tauschen

$format = "The %s contains %d monkeys";
printf($format,$num,$location);
Nun haben wir ein Problem. Die Reihenfolge der Platzhalter des Formatstrings entspricht nicht mehr der Reihenfolge der Argumente im Code. Wir würden gerne den Code belassen wie er ist, und einfach im Formatstring angeben, welchen Argumenten die Platzhalter entsprechen. Wir würden dann den Formatstring wie folt schreiben:

Example#3 Argumente tauschen

$format = "The %2\$s contains %1\$d monkeys";
printf($format,$num,$location);
Ein weiterer Vorteil ist, dass wir nun die Platzhalter wiederholen können, ohne mehr Argumente im Code hinzufügen zu müssen. Zum Beispiel:

Example#4 Argumente tauschen

$format = "The %2\$s contains %1\$d monkeys.
           That's a nice %2\$s full of %1\$d monkeys.";
printf($format, $num, $location);

Siehe auch: printf(), sscanf(), fscanf() und number_format().

Beispiele:

Example#5 sprintf(): Null-gefüllte Integer-Werte

$isodatum = sprintf ("%04d-%02d-%02d", $jahr, $monat, $tag);

Example#6 sprintf(): Währung formatieren

$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money wird ausgeben "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted wird ausgeben "123.10"