(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
vsprintf — Gibt einen formatierten String zurück
Verhält sich wie sprintf(), akzeptiert jedoch ein Array anstelle mehrerer Werte als Parameter.
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 Array-Werte als formatierten String entsprechend der format
-Anweisung zurück. Bei einem Fehler wird false
zurückgegeben.
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 ValueError 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 eine 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 ValueError aus; vorher gab sie stattdessen eine E_WARNING aus. |
Beispiel #1 vsprintf(): mit Nullen aufgefüllte Ganzzahlen
<?php
print vsprintf("%04d-%02d-%02d", explode('-', '1988-8-1'));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
1988-08-01