Position actuelle: Accueil> Derniers articles> Utilisez VFPrintf pour produire du contenu formaté de plusieurs types de données

Utilisez VFPrintf pour produire du contenu formaté de plusieurs types de données

gitbox 2025-05-29

Qu'est-ce que vfprintf ()?

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.


Types de données pris en charge par les chaînes de format

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.


Exemples pratiques

Exemple 1: Écrivez des chaînes et des entiers

 <?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

Exemple 2: Écrivez un numéro de point flottant et gardez deux décimales

 <?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.


Exemple 3: générer dynamiquement des URL et des fichiers d'écriture

 <?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

Exemple 4: journal d'écriture de type mixte

 <?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

Conseils et précautions

  1. 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.

  2. 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.

  3. 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 () .

  4. Adaptation multilingue : Lors de la mise en forme de la sortie, vous pouvez le prétraiter avec sprintf () et vPrintf () .