PHP 4.3

7.8 Formatierung von Zeichenketten

Die Funktionen printf() und sprintf(), die beide auf den gleichnamigen Funktionen der Programmiersprache C beruhen, formatieren Zeichenketten und numerische Daten. Grundsätzlich unterscheiden sich die beiden Funktionen nur dadurch, dass printf() den formatierten Wert ähnlich wie echo sofort ausgibt, während sprintf() ihn als string-Wert zurückliefert.

printf / sprintf erhalten als erstes Argument einen Formatstring, den sie folgendermaßen bearbeitet wieder zurückliefern:
Mit % beginnende Formatangaben werden jeweils durch das entsprechend formatierte nachfolgende Argument ersetzt. Dabei werden die %-markierten Formatangaben der Reihe nach auf die nachfolgenden Argumente angewendet.

Beispiele:
%f formatiert eine Zahl als dezimale Zahl mit Vor- und Nachkommastellen.
%.2f gibt an, dass dabei genau zwei Nachkommastellen zu sehen sein sollen.

Soll wirklich mal aus dem Formatstring ein % mit ausgegeben werden, so verdoppelt man das %-Zeichen (und dann ist kein weiteres Argument erforderlich).

Um Ihnen ein Beispiel für diese Formatierungsoptionen zu geben, wird mit dem folgenden Quelltext der formatierte Zahlenwert im String als Fließkommazahl mit zwei Dezimalen hinter dem Komma ausgegeben.

Skriptbeispiel printf() und sprintf()
<?php

  $preis = 15;
  $formatpreis = sprintf("%.2f", $preis);
  echo "Der Preis beträgt: " . $formatpreis . " Euro<br>";

  // alternativ zu sprintf mit echo

  printf ("Der Preis beträgt: %.2f Euro<br>", $preis);

  // Diese Formatierung gibt eine Fließkommazahl aus

?>

In diesem Falle wurden nur die numerischen Angaben formatiert.

Browserausgabe
Der Preis beträgt: 15.00 Euro
Der Preis beträgt: 15.00 Euro

Weitere Parameter zur Formatierung:

%b

das Argument wird als integer angesehen und als Binärwert ausgegeben

%f

das Argument wird als double angesehen und als Fließkommazahl ausgegeben

%d

das Argument wird als integer angesehen und als Dezimalwert ausgegeben

%o

das Argument wird als integer angesehen und als Oktalwert ausgegeben

%s

das Argument wird als string angesehen und als solcher ausgegeben

%x

das Argument wird als integer angesehen und als Hexadezimal-Wert ausgegeben

%X

das Argument wird als integer angesehen und als Hexadezimal-Wert in Grossbuchstaben ausgegeben

Eine weitere Möglichkeit der Formatierung stellen die beiden Funktionen mit dem Auffüllen von Zeichenketten zur Verfügung.

Der optionale Füllzeichen-Parameter kann den von Ihnen übergebenen Wert nach rechts oder nach links auffüllen. In beiden Fällen ist das Leerzeichen das Standardfüllzeichen. Sie können jedoch auch eigene Füllzeichen definieren, indem Sie dem gewünschten ein einfaches Anführungszeichen (') voranstellen (dieses können Sie im häufigen Fall, dass Sie mit Nullen auffüllen wollen, aber auch weglassen).

Folgende Beispiele verdeutlichen dies:

Skriptbeispiel sprintf()
<?php

  // Auffüllen mit Leerzeichen von links bis 20 Zeichen Länge
  $wert = "1234567";
  $wert = sprintf ("%20s", $wert);
  echo "<pre>" . $wert . "</pre>";

  // Auffüllen mit "X" von links bis 20 Zeichen Länge
  $wert = "1234567";
  $wert = sprintf ("%'X20s", $wert);
  echo "<pre>" . $wert . "</pre>";

  // Auffüllen mit "X" von rechts bis 20 Zeichen Länge
  $wert = "1234567";
  $wert = sprintf ("%'X-20s", $wert);
  echo "<pre>" . $wert . "</pre>";

  // Umwandlung in Hexadezimalzahl und Auffüllen mit 0 bis max. 2 Zeichen Länge
  $wert = "11";
  $wert = sprintf ("%02x", $wert);
  echo "<pre>" . $wert . "</pre>";

?>

Browserausgabe
             1234567
XXXXXXXXXXXXX1234567
1234567XXXXXXXXXXXXX
0b

Kommentare (0)

Ihr Kommentar

Name