(PHP 4, PHP 5, PHP 7, PHP 8)
printf — Liefert einen formatierten String
format
Der Formatstring setzt sich aus keiner oder mehreren Anweisungen zusammen: Normale Zeichen (abgesehen von %
), die direkt in das Ergebnis kopiert werden und Konvertierungsanweisungen, die jeweils ihre eigenen Parameter abrufen.
Eine Konvertierungsanweisung folgt diesem Prototypen: %[ArgNum$][Flags][Weite][.Präzision]Spezifizierer
.
Eine Ganzzahl gefolgt von einem Dollarzeichen $
, die die Nummer des Arguments angibt, das für die Konversion verwendet werden soll.
Flag | Beschreibung |
---|---|
- | Linksbündig innerhalb der angegebenen Feldbreite; Rechtsbündig ist der Standard |
+ | Positive Zahlen mit einem Pluszeichen + ; Standardmäßig werden nur negative Zahlen mit negativen Vorzeichen ausgegeben |
(Leerzeichen) | Füllt das Ergebnis mit Leerzeichen auf. Dies ist der Standard. |
0 | Füllt nach Links mit Nullen auf. Mit dem s -Spezifizierer kann dies auch nach rechts mit Nullen auffüllen. |
' (Zeichen) | Füllt das Ergebnis mit dem angegebenen Zeichen auf. |
Entweder eine Ganzzahl die angibt, wie viele Zeichen (Minimum) das Konvertierungsergebnis haben soll oder *
. Wenn *
verwendet wird, wird die Breite als zusätzlicher ganzzahliger Wert angegeben, der bestimmt, wie viele Zeichen vor dem durch den Spezifizierer formatierten Wert stehen sollen.
Ein Punkt .
, optional gefolgt von einer Ganzzahl oder *
, dessen Bedeutung vom Spezifizierer abhängt:
e
, E
, f
und F
: Dies stellt die Anzahl der Nachkommastellen an, die nach dem Dezimaltrennzeichen ausgegeben werden soll (Standardmäßig ist dies 6). g
, G
, h
und H
: Die maximale Anzahl der auszugebenenden signifikanten Nachkommastellen. s
Spezifizierer: Verhält sich wie ein Abschneidepunkt, der eine maximale Anzahl an Zeichen in der Zeichenkette angibt. Hinweis: Wenn der Punkt ohne einen expliziten Wert für die Genauigkeit angegeben wird, wird 0 angenommen. Wenn
*
verwendet wird, wird die Genauigkeit als zusätzliche Ganzzahl vor dem durch den Bezeichner formatierten Wert angegeben.
Spezifizierer | Beschreibung |
---|---|
% | Ein Prozentzeichen. Kein Parameter nötig. |
b | Der Parameter wird als Ganzzahl behandelt und als Binärzahl ausgegeben. |
c | Der Parameter wird als Ganzzahl behandelt und als Zeichen aus dem ASCII-Zeichensatz ausgegeben. |
d | Der Parameter wird als Ganzzahl behandelt und als (vorzeichenbehaftete) Dezimalzahl ausgegeben. |
e | Der Parameter wird als Zahl in wissenschaftlicher Schreibweise (z. B. 1.2e+2) behandelt. |
E | Wie der Spezifizierer e , aber schreibt einen Großbuchstaben (z. B. 1.2E+2). |
f | Der Parameter wird als Gleitkommazahl betrachtet und als Gleitkommazahl ausgegeben (abhängig von der Locale). |
F | Der Parameter wird als Gleitkommazahl betrachtet und als Gleitkommazahl (unabhängig von der Locale) ausgegeben. |
g | Generelles Format. Sei P gleich der Genauigkeit, wenn nicht Null, 6, wenn die Genauigkeit nicht angegeben ist, oder 1 wenn die Genauigkeit Null ist. Dann, wenn eine Konvertierung mittels E einen Exponenten von X hätte: Wenn P > X ≥ −4, erfolgt die Konvertierung mit Spezifizierer f und Genauigkeit P - (X + 1), andernfalls mit Spezifizierer e und Genauigkeit P - 1. |
G | Wie der Spezifizierer g , aber es wird E und f verwendet. |
h | Wie der Spezifizierer g , aber es werden F verwendet. Verfügbar ab PHP 8.0.0. |
H | Wie der Spezifizierer g , aber es werden E und F verwendet. Verfügbar ab PHP 8.0.0. |
o | Der Parameter wird als Ganzzahl betrachtet und als Oktalzahl ausgegeben. |
s | Der Parameter wird als Zeichenkette betrachtet und ausgegeben. |
u | Der Parameter wird als Ganzzahl betrachtet und als vorzeichenlose Dezimalzahl ausgegeben. |
x | Der Parameter wird als Ganzzahl betrachtet und als Hexadezimalzahl (mit Kleinbuchstaben) ausgegeben. |
X | Der Parameter wird als Ganzzahl betrachtet und als Hexadezimalzahl (mit Großbuchstaben) ausgegeben. |
Der Spezifizierer c
ignoriert Auffüllung und Weite.
Der Versuch, die Kombination aus Zeichenketten mit Weite-Spezifizierern und Zeichensätzen die mehr als ein Byte pro zeichen erwarten zu verwenden, führt zu unvorhersehbaren Ergebnissen.
Variablen werden auf einen für den Spezifizier passenden Typen umgewandelt:
Typ | Spezifizierer |
---|---|
string | s |
int | d , u , c , o , x , X , b |
float | e , E , f , F , g , G , h , H |
values
Gibt die Länge des ausgegebenen Strings zurück.
Wenn die Anzahl der Argumente Null ist, wird seit PHP 8.0.0 ein ValueError ausgelöst. Vor PHP 8.0.0 wurde stattdessen eine E_WARNING
ausgegeben.
Wenn [width]
kleiner als Null oder größer als PHP_INT_MAX
ist, wird seit PHP 8.0.0 ein ValueError ausgelöst. Vor PHP 8.0.0 wurde stattdessen eine E_WARNING
ausgegeben.
Wenn [precision]
kleiner als Null oder größer als PHP_INT_MAX
ist, wird seit PHP 8.0.0 ein ValueError ausgelöst. Vor PHP 8.0.0 wurde stattdessen eine E_WARNING
ausgegeben.
Wenn weniger Argumente angegeben werden als nötig, wird seit PHP 8.0.0 ein ArgumentCountError ausgelöst. Vor PHP 8.0.0 wurde stattdessen false
zurückgegeben und eine E_WARNING
ausgegeben.
Version | Beschreibung |
---|---|
8.0.0 | Diese Funktion gibt bei Auftreten eines Fehlers nicht mehr false zurück. |
8.0.0 | Wenn die Anzahl der Argumente Null ist, löst diese Funktion einen ValueError aus; vorher gab sie stattdessen eine E_WARNING aus. |
8.0.0 | Wenn [width] kleiner als Null oder größer als PHP_INT_MAX ist, löst diese Funktion einen ValueError aus; vorher gab sie stattdessen einen E_WARNING aus. |
8.0.0 | Wenn [precision] kleiner als Null oder größer als PHP_INT_MAX ist, löst diese Funktion einen ValueError aus; vorher gab sie stattdessen eine E_WARNING aus. |
8.0.0 | Wenn weniger Argumente angegeben werden als nötig, löst diese Funktion einen ArgumentCountError aus; vorher gab sie stattdessen eine E_WARNING aus. |
Beispiel #1 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); // Ausgabe des ASCII-Zeichens; gleicht der chr() Funktion
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 #2 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("[%'#*s]\n", 10, $s); // Angabe der Auffüllbreite durch ein zusätzliches Argument
printf("[%10.9s]\n", $t); // rechtsbündige Ausgabe mit Abschneiden überflüssiger
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [ many monk] [many monk ]