VFprintf () est une fonction fournie par PHP pour écrire des chaînes formatées dans un flux de fichiers spécifié. Contrairement à fprintf () , vfprintf () reçoit un tableau de listes de paramètres. Cela le rend plus flexible lors de l'épissage et du traitement dynamiquement de plusieurs types de données.
Définition de la fonction:
int vfprintf ( resource $handle , string $format , array $args )
$ Handle : Fichier Pointer Resource, généralement renvoyé par fopen () .
$ format : chaîne de format.
$ args : le tableau de données à insérer dans la chaîne formatée.
Dans vFprintf () , nous pouvons utiliser une série d'identifiants de format pour prendre en charge différents types de sortie. Les plus courants incluent:
% s : chaîne
% D : entier (décimal)
% F : numéro de point flottant
% x : hexadécimal (minuscules)
% X : hexadécimal (CAPS)
% B : binaire
% C : caractère ASCII
Ces identifiants peuvent être combinés avec des modificateurs (tels que la précision, le rembourrage, etc.) pour répondre aux exigences de sortie plus complexes.
<?php
$fp = fopen("log.txt", "a");
$name = "Alice";
$age = 30;
vfprintf($fp, "Name: %s, Age: %d\n", array($name, $age));
fclose($fp);
?>
Ce code écrit ce qui suit dans le fichier 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);
?>
Sortir:
Product: Coffee, Price: $19.46
% .2f ici signifie garder deux décimales.
<?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);
?>
Le contenu écrit dans le fichier est:
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);
?>
La sortie est similaire:
[2025-05-29 15:30:00] User ID: 101, Success: true, IP: 192.168.1.10
Sécurité : Évitez que l'entrée de l'utilisateur est épissée directement dans les chaînes de format, empêchant les attaques d'injection de format.
L'ordre du tableau doit être précis : le tableau des paramètres doit correspondre à la chaîne de format un par un, et l'ordre ne peut pas être faux.
Autorisations de fichier : assurez-vous que le fichier que vous écrivez a une autorisation d'écriture, sinon cela entraînera l'échec de FOPEN () ou vfprintf () .
Adaptation multilingue : Lors de la mise en forme de la sortie, vous pouvez le prétraiter avec sprintf () et vPrintf () .