Signatur
Beschreibung
vprintf() funktioniert wie printf(), erwartet jedoch die einzusetzenden Werte nicht als einzelne Argumente, sondern als Array. Dies macht die Funktion besonders praktisch, wenn die Werte bereits als Array vorliegen oder dynamisch zusammengestellt werden.
Das Format-Muster folgt denselben Regeln wie bei sprintf(): Platzhalter beginnen mit %, gefolgt von optionalen Angaben zu Position, Auffüllung, Ausrichtung, Breite, Genauigkeit und dem Typbezeichner (z. B. %s für Strings, %d für ganze Zahlen, %f für Fließkommazahlen). Positionsangaben wie %1$s ermöglichen die mehrfache Verwendung desselben Wertes oder eine andere Reihenfolge der Ausgabe.
Die Ausgabe erfolgt direkt zum aktuellen Ausgabepuffer (Browser, CLI usw.). Soll der formatierte String stattdessen als Variable gespeichert werden, ist vsprintf() zu verwenden.
vprintf() eignet sich besonders in Situationen, in denen Format-String und Werte-Array getrennt voneinander zusammengebaut werden, etwa bei der Internationalisierung von Texten oder beim Verarbeiten externer Daten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $format Pflicht | string | Der Format-String mit %-Platzhaltern, wie bei sprintf(). Jeder Platzhalter wird durch den entsprechenden Wert aus $values ersetzt. |
|
| $values Pflicht | array | Ein indiziertes Array mit den Werten, die in den Format-String eingesetzt werden. Die Reihenfolge der Elemente entspricht der Reihenfolge der Platzhalter (sofern keine Positionsangaben verwendet werden). |
Rückgabewert
Beispiele
Einfache Ausgabe mit mehreren Typen
<?php
$format = 'Benutzer %s hat %d Punkte und ein Guthaben von %.2f Euro.';
$werte = ['Alice', 42, 19.5];
$laenge = vprintf($format, $werte);
echo PHP_EOL . '(Ausgabe: ' . $laenge . ' Zeichen)';
Verwendung mit Positionsangaben (Internationalisierung)
<?php
// Deutsch: Vorname zuerst, dann Nachname
$format_de = 'Guten Tag, %1$s %2$s!';
// Andere Sprache: Nachname zuerst
$format_en = 'Hello, %2$s %1$s!';
$werte = ['Maria', 'Müller'];
vprintf($format_de, $werte);
echo PHP_EOL;
vprintf($format_en, $werte);
Dynamisch zusammengestelltes Werte-Array
<?php
$produkt = [
'name' => 'Laptop',
'menge' => 3,
'preis' => 899.99,
];
$format = "Produkt: %-20s | Menge: %3d | Preis: %8.2f EUR\n";
vprintf($format, array_values($produkt));
// Wichtig · Fallstricke
Sicherheitshinweis: Benutzer-Eingaben dürfen niemals als $format-Argument übergeben werden, da ein manipulierter Format-String zu unerwarteten Ausgaben oder dem Lesen interner Daten führen kann. Benutzer-Eingaben gehören ausschließlich in das $values-Array.
Wenn die Anzahl der Platzhalter im Format-String nicht mit der Anzahl der Array-Elemente übereinstimmt, erzeugt PHP seit PHP 8.0 einen ValueError. In älteren Versionen wurde lediglich eine Warnung ausgegeben.
Für die Rückgabe des formatierten Strings als Variable (ohne direkte Ausgabe) steht vsprintf() zur Verfügung.