vfprintf () ist eine von PHP bereitgestellte Funktion zum Schreiben formatierter Zeichenfolgen in einen angegebenen Dateistrom. Im Gegensatz zu Fprintf () empfängt VFprintf () ein Array von Parameterlisten. Dies macht es flexibler, wenn Sie mehrere Datenarten dynamisch spleißen und verarbeiten.
Funktionsdefinition:
int vfprintf ( resource $handle , string $format , array $args )
$ Handle : Dateizeigerressource, normalerweise zurückgegeben von fopen () .
$ Format : Formatzeichenfolge.
$ args : Das Array von Daten, die in der formatierten Zeichenfolge eingefügt werden sollen.
In vfprintf () können wir eine Reihe von Formatidentifikatoren verwenden, um verschiedene Arten von Ausgabe zu unterstützen. Zu den allgemeinen gehören:
%s : String
%d : Ganzzahl (Dezimal)
%f : schwebende Punktzahl
%X : Hexadezimal (Kleinbuchstaben)
%X : Hexadezimal (Kappen)
%B : Binär
%C : ASCII -Zeichen
Diese Kennungen können mit Modifikatoren (wie Präzision, Polsterung usw.) kombiniert werden, um komplexere Ausgangsanforderungen zu erfüllen.
<?php
$fp = fopen("log.txt", "a");
$name = "Alice";
$age = 30;
vfprintf($fp, "Name: %s, Age: %d\n", array($name, $age));
fclose($fp);
?>
Dieser Code schreibt Folgendes in die Datei log.txt :
Name: Alice, Age: 30
<?php
$fp = fopen("log.txt", "a");
$product = "Coffee";
$price = 19.456;
vfprintf($fp, "Product: %s, Price: \$%.2f\n", array($product, $price));
fclose($fp);
?>
Ausgabe:
Product: Coffee, Price: $19.46
%.2f hier bedeutet, zwei Dezimalstellen zu halten.
<?php
$fp = fopen("links.txt", "a");
$endpoint = "api/data";
$id = 42;
$url = "https://gitbox.net/%s?id=%d";
vfprintf($fp, $url."\n", array($endpoint, $id));
fclose($fp);
?>
Der in die Datei geschriebene Inhalt laute:
https://gitbox.net/api/data?id=42
<?php
$fp = fopen("debug.log", "a");
$time = date("Y-m-d H:i:s");
$userId = 101;
$success = true;
$ip = "192.168.1.10";
vfprintf($fp, "[%s] User ID: %d, Success: %s, IP: %s\n", array(
$time, $userId, $success ? "true" : "false", $ip
));
fclose($fp);
?>
Die Ausgabe ist ähnlich:
[2025-05-29 15:30:00] User ID: 101, Success: true, IP: 192.168.1.10
Sicherheit : Vermeiden Sie die Eingabe von Benutzer, die direkt in Formatketten gespleißt werden, wodurch Formatinjektionsangriffe verhindern.
Die Reihenfolge des Arrays muss genau sein : Das Parameter -Array muss der Formatzeichenfolge nacheinander entsprechen, und die Reihenfolge kann nicht falsch sein.
Dateiberechtigungen : Stellen Sie sicher, dass die von Ihnen geschriebene Datei eine Schreibberechtigung hat, andernfalls wird fopen () oder vfprintf () fehlgeschlagen.
Mehrsprachige Anpassung : Wenn Sie die Ausgabe formatieren, können Sie sie mit Sprintf () und vPintf () vorbearbeiten.