Du bist hier: Tips » Scripte » PHP
PHP
Referenzliste

sprintf

String-Funktionen

    Befehl:
string sprintf ( string $format [, mixed $args [, mixed $... ]] )


    Parameter-Liste:
NameBeschreibung
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:

  1. 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.
  2. 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.
  3. 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.
  4. Eine optionale Zahl für die Längenangabe, welche die mindestens zurückzugebende Anzahl Zeichen spezifiziert.
  5. 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.
  6. 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).
    • u - das Argument wird als Integer angesehen und ein positiver vorzeichenloser Dezimalwert (unsigned integer) ausgegeben.
    • 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.
    • 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).

argsWeitere Eingaben

    Rückgabewerte:
Gibt eine an Hand des Formatierungs-Strings format gebildete Zeichenkette zurück.

    Beschreibung:
Gibt eine an Hand des Formatierungs-Strings format gebildete Zeichenkette zurück.


    Aktiv in Version:
(PHP 4, PHP 5, PHP 7)

    Siehe auch:
Gibt einen formatierten String aus
 
Überträgt einen String in ein angegebenes Format
 
Interpretiert den Input einer Datei entsprechend einem angegebenen Format
 
Gibt einen formatierten String zurück
 
Formatiert eine Zahl mit Tausender-Gruppierung
 

sprintf() - Beispiel:


Eingabe:
<?php
$anzahl = 5;
$ort    = 'Baum';
$format = 'Es sind %d Affen auf dem %s';
printf($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:

<?php
$format = 'Der %s enthält %d Affen';
printf($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:

<?php
$format = 'Der %2$s enthält %1$d Affen';
printf($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:

<?php
$format = 'Der %2$s enthält %1$d Affen.
           %1$d Affen sind ziemlich viel für einen %2$s.';
printf($format, $anzahl, $ort);
?>


Wenn Argumenttausch verwendet wird muss die <em>n$</em> <em class="emphasis">Positionsangabe</em> direkt nach dem Prozentzeichen (<em>%</em>) folgen, vor jeglichen anderen Angaben, wie im Beispiel unten zu sehen ist.

<?php
$format= 'Der %2$s enthält %1$04d Affen';
printf($format, $anzahl, $ort);
?>


Der Baum enthält 0005 Affen.

Beschreibung:
Version Beschreibung
4.0.6 Unterstützung für Argument numbering/swapping hinzugefügt.
sprintf() - Beispiel 2:


Eingabe:
<?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); // Fliesskommazahldarstellung
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 (Grossbuchstaben)

printf("%%+d = '%+d'\n", $n); // Vorzeichenangabe für positive Integerzahlen
printf("%%+d = '%+d'\n", $u); // Vorzeichenangabe für negative Integerzahlen
?>


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'

Beschreibung:
Mit sprintf() kann man Parameter (args) nach einem bestimmten Muster (format) formatieren lassen. Im Gegensatz zu printf() wird der String nicht sofort ausgegeben, sondern kann in einer Variablen gespeichert werden.


Der Musterstring format enth�lt Platzhalter, die mit einem Prozentzeichen eingeleitet werden. Die Funktion ersetzt diese Platzhalter durch die entsprechend formatierten Werte aus den n�chsten Parametern. Die Platzhalter bestehen aus folgenden Elementen:


Ein optionales F�llzeichen, welches den String nach rechts auff�llt. Dabei kann das F�llzeichen eine Null (0) oder ein Leerzeichen sein. Andere F�llzeichen k�nnen durch Voranstellen eines einfachen Hochkommas (') definiert werden. Eine optionale Angabe der Textausrichtung. Voreingestellt ist rechts, bei links muss ein Bindestrich (-) angegeben werden. Ein optionaler Wert f�r die L�ngenangabe. Ein optionaler Wert f�r die Anzahl der Nachkommastellen - wird allerdings nur beim Typ "double" unterst�tzt.

Beschreibung:
Version Beschreibung
4.0.6 Unterstützung für Argument numbering/swapping hinzugefügt.
sprintf() - Beispiel 3: Stringformation


Eingabe:
<?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
?>


Ausgabe:
[monkey]
[    monkey]
[monkey    ]
[0000monkey]
[####monkey]
[many monke]

Beschreibung:
Version Beschreibung
4.0.6 Unterstützung für Argument numbering/swapping hinzugefügt.
sprintf() - Beispiel 4: Mit Nullen aufgefüllte Integer


Eingabe:
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>


Beschreibung:
Version Beschreibung
4.0.6 Unterstützung für Argument numbering/swapping hinzugefügt.
sprintf() - Beispiel 5: Wärungsformatierung


Eingabe:
<?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
?>


Beschreibung:
Version Beschreibung
4.0.6 Unterstützung für Argument numbering/swapping hinzugefügt.
sprintf() - Beispiel 6: Wissenschaftliche Notation


Eingabe:
<?php
$number = 362525200;

echo sprintf("%.3e", $number); // Ausgabe 3.625e+8
?>


Beschreibung:
Version Beschreibung
4.0.6 Unterstützung für Argument numbering/swapping hinzugefügt.
String-Funktionen