17.08.19 5416 Views 4

credit: ©nd3000/ shutterstock

PHP Tutorial #14

Strings und Zahlen formatieren

Häufig sollen dem Endnutzer einer Website Strings und Zahlen in übersichtlicher bzw. aufbereiteter Form präsentiert werden. Beispiele dafür sind Füllzeichen, die Anzahl von Dezimalstellen oder eine genormte Anzeige von Geldbeträgen. Genau dafür gibt es in PHP spezielle Funktionen, die wir uns nun näher anschauen.

Download als eBook

Thema in Kurzform

// Zeigt formatierten String am Bildschirm an
$number = 3.14159265359;
printf("Zahl mit 3 Dezimalstellen: %.3f", $number); // 3.142
// Liefert formatierten String zurück
$number = 3.14159265359;
$save = sprintf("Zahl mit 3 Dezimalstellen: %.3f", $number); // 3.142
// Zahlen formatieren
$betrag = 149504.154;
echo number_format($betrag, 2, "," , "."); // 149.504,15

    Inhaltsverzeichnis

  1. printf() - Strings formatieren
  2. sprintf() - formatierten String speichern
  3. number_format() - Zahlen formatieren
  4. Übungen

printf() - Strings formatieren

In PHP müssen wir oft Strings am Bildschirm ausgeben. In der Regel verwenden wir hier echo, das einen String 1:1 am Bildschirm ausgibt.

Wollen wir einen String dagegen formatiert angezeigt haben, verwenden wir die Funktion printf(). Die Funktion ist etwa komplexer, deshalb sehen wir hier genauer hin.

Zunächst ein erstes Beispiel, wie das Teil funktioniert:

$number = 3.14159265359;
printf("Zahl mit 3 Dezimalstellen: %.3f", $number); // 3.142

printf() erwartet als ersten Parameter den Formatierungsstring. Dieser legt fest, wie der Output formatiert sein soll. Der Formatierungsstring enthält (neben "normalen" Text) sog. Platzhalter, markiert durch Prozentzeichen %.

Nach dem Formatierungsstring folgt mindestens ein weiterer Parameter. Beim Funktionsaufruf werden die Argumente in die Platzhalter des Formatierungsstrings eingefügt und entsprechend formatiert.

In unserem Beispiel wird der Wert von $number in den Platzhalter % eingetragen. %.3f ist der Format-Spezifikator und bewirkt, dass die Zahl auf drei Dezimale formatiert werden soll.

Wie wir gesehen haben, beginnt ein Formatierungshinweis mit einem Prozentzeichen % und endet mit einem Buchstaben. Dieser Buchstabe kann folgende Bedeutungen haben:

  • %d Formatierung für Ganzzahlen
  • %f für Fließkommawerte
  • %s für Strings

Das allein bewirkt noch nicht viel, denn zwischen dem Platzhalter % und dem Buchstaben (d, f, s) sind noch weitere Formatierungshinweise einsetzbar, die wir uns nun nacheinander genauer ansehen.

Anzahl der Nachkommastellen

Wie eingangs schon gesehen, funktioniert das ganz einfach, indem wir zwischen dem % und dem Buchstaben f (Fließkommazahl) einen Punkt und dann die Anzahl der gewünschten Nachkommastellen notieren:

$zahl = 27;
printf("%.2f", $zahl); // 27.00

Füllzeichen

Um einen ganzzahligen Wert mit führenden Nullen zu formatieren, gehen wir so vor:

$zahl = 27;
printf("%04d", $zahl); // 00027

Durch 04 wird festgelegt, dass der Wert mindestens 4 Zeichen lang sein und als Füllzeichen die 0 verwendet werden soll.

Klar geht das auch bei Fließkomma-Werten:

$dezimal = 27.99;
printf("%07.2f", $dezimal); // 0027.99

Aber vorsicht: 7 legt die Gesamtzahl fest, d.h. der Punkt wird mitgerechnet!

Andere Füllzeichen sind möglich. Dazu muss das Füllzeichen mit '\ maskiert werden:

printf('%\'*5d', 10); // ***10
printf('%\'A10.2f', 1.1); // AAAAAA1.10

Füllzeichen sind sogar bei Strings möglich:

$str = FALCON;
printf("%09s", $str); // 000FALCON

Nun sind führende Nullen bei Strings nicht gerade üblich. Andere Zeichen wären nett.

Kein Problem: Wir setzen statt der 0 ein einfaches ' Zeichen und anschließend das gewünschte Füllzeichen:

$str = "FALCON";
printf("%'x9s", $str); // xxxFALCON
printf("%'*9s", $str); // ***FALCON
printf("%'_9s", $str); // ___FALCON

Maximale Länge festlegen

Wir können bei einem String auch die maximale Länge angeben. Alles was länger ist, wird gnadenlos abgeschnitten:

$str = "Hallo Welt, wie geht es Dir?";
printf("Die ersten drei Zeichen: %.3s", $str); // Hal

Vorzeichen anzeigen

Positive Zahlen werden ohne Vorzeichen angezeigt. Um das zu ändern, schreiben wir vor den Buchstaben d oder f ein + (Pluszeichen):

$positiv = 10;
printf("%+d", $positiv); // +10

Mehrere Argumente einsetzen

In unseren Beispielen haben wir printf() immer nur mit einem Wert formatiert. Hier ein Beispiel für mehrere:

$a = 7;
$b = "Octopussy";

printf("[Agent: %03d] [Auftrag: %s]", $a, $b);

// [Agent: 007] [Auftrag: Octopussy]

printf() funktioniert "Schritt für Schritt". Beim ersten %-Zeichen wird das erste Argument eingesetzt. Beim zweiten %-Zeichen das zweite Argument und so weiter.

sprintf() - formatierten String speichern

Mit printf() geben wir einen formatierten String einfach am Bildschirm aus. Wir können den String aber nicht speichern:

Um einen formatierten String zu speichern, müssen wir die Funktion sprintf() benutzen. Diese funktioniert wie printf(), gibt den formatierten String aber zurück, sodass wir ihn in einer Variable speichern können.

$a = 7;
$b = "Octopussy";

$save = sprintf("[Agent: %03d] [Auftrag: %s]", $a, $b);
echo $save;

Der formatierte String ist in der Variable $save gespeichert. echo $save gibt ganz korrekt Folgendes aus:

[Agent: 007] [Auftrag: Octopussy]

number_format() - Zahlen formatieren

Um Zahlen mit vielen Ziefern besser lesbar zu machen, ist es im Deutschen üblich, Tausender-Trennzeichen zu verwenden und die Zahlen vor dem Komma in Dreiergruppen zu gliedern. Außerdem verwendet man - im Unterschied zum Englischen - im Deutschen ein Komma als Trennzeichen für die Nachkommastellen.

  • 149.504,15 €
  • 12 742 km (Durchmesser der Erde)

Wie wir sehen, können der Punkt oder das Leerzeichen als Tausender-Trennzeichen verwendet werden.

Es wird aber empfohlen, den Punkt nur bei der Darstellung von Geldbeträgen zu verwenden - alle anderen Zahlen sollten mit Leerzeichen in Dreiergruppen gegliedert werden.

Mit der Funktion number_format() können wir beide Formatierungen sehr einfach erhalten:

$betrag = 149504.154;
echo number_format($betrag, 2, "," , ".");
// 149.504,15

$kontoNr = 123456789;
echo number_format($kontoNr, 0, "," , " ");
// 123 456 789

number_format() hat vier Parameter für:

  • die zu formatierende Zahl
  • Anzahl der Nachkommastellen
  • Trennzeichen für die Nachkommastellen
  • Tausendertrennzeichen

Übungen

einfach

Schau dir den Screenshot an. Die Punktezahl (roter Pfeil) wird mit einigen führenden Nullen mit 00012900 dargestellt.

Ergänze den folgenden PHP-Code und setze die Funktion printf() ein, um genau diese Formatierung am Bildschirm angezeigt zu bekommen:

$punkte = 12900;
// printf(...);

PHP printf() New Super Mario Bros Wii

Lösung ein-/ausblenden

mittel

Du hast folgenden Code:

$lang = "de"; // oder "en"
$betrag = "1899.99";

Die Variable $lang kann den Wert de oder en haben. Je nach dem, welchen Wert sie hat, soll der Wert von $betrag entsprechend der landestypischen Formatierung am Bildschirm angezeigt werden.

  • Im Deutschen: 1.899,99
  • Im Englischen: 1,899.99

Lösung ein-/ausblenden

schwer

Definier zwei Variablen:

  • $name für Deinen Namen
  • $credits nimmt eine Zahl zwischen -99 und +99 auf

Erstelle einen formatierten String nach folgendem Muster:

Hallo R,
du hast +07 Credits

Das heißt:

  • Nur der erste Buchstabe des Namens soll angezeigt werden
  • Der Wert von $credits soll maximal zwei Ziffern lang sein und ggf. mit einer führenden Null angezeigt werden.
  • Der Wert von $credits soll mit Vorzeichen angezeigt werden.

Der formatierte String soll gespeichert und anschließend mit echo am Bildschirm angezeigt werden.

Lösung ein-/ausblenden

Java lernen

text text

PHP Lernen

zur PHP

JavaScript lernen

move nove move

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2023 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte Youtube Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen