La syntaxe de base de la fonction VFPRINTF est la suivante:
vfprintf(resource $stream, string $format, array $args): int|false
$ Stream : File Resource Handle, obtenu via des fonctions telles que fopen () .
$ format : chaîne de format, similaire au spécificateur de format pour les fonctions de série printf .
$ args : un tableau contenant les valeurs à formater dans l'ordre correspondant aux spécificateurs de format dans la chaîne de format.
Exemple:
<?php
$file = fopen("gitbox.net/log.txt", "w");
vfprintf($file, "User %s has %d points\n", ["Alice", 120]);
fclose($file);
?>
Ici, une ligne sera écrite dans le fichier gitbox.net/log.txt :
User Alice has 120 points
Dans une chaîne de format, le pourcentage de signe % est le symbole de départ du spécificateur de format, qui indique à la fonction qu'il est suivi d'un espace réservé, indiquant qu'il doit être remplacé par la valeur correspondante dans le tableau. Par exemple:
% s : chaîne
% D : entier
% F : numéro de point flottant
Le spécificateur de format peut également inclure des modificateurs tels que la largeur, la précision, l'alignement, etc.
Chaque spécificateur de format doit commencer par % .
Par exemple, % S et % D ne peuvent pas être écrits comme s ou d .
Si vous avez besoin de produire un pourcentage littéral pour cent de caractères, vous devez utiliser un pourcentage à double pourcentage %% .
Ceci est très important, sinon un seul % sera utilisé comme début du spécificateur de format, ce qui entraîne une erreur ou une exception par la suite sans caractère de format légitime.
Par exemple:
<?php
$file = fopen("gitbox.net/output.txt", "w");
vfprintf($file, "Progress: 75%% complete\n", []);
fclose($file);
?>
La sortie sera:
Progress: 75% complete
Le nombre de panneaux pour cent dans la chaîne de format doit correspondre aux paramètres du tableau.
Le nombre d'éléments dans le tableau doit être égal au nombre de spécificateurs de format dans la chaîne de format.
Si la chaîne de format a 3 espaces réservés, le tableau doit également avoir 3 éléments.
Évitez les erreurs de chaîne de format.
Le spécificateur de format doit se conformer aux spécifications, sinon elle provoquera un avertissement ou une erreur. Par exemple, % Q n'est pas un caractère de format valide.
Voici un exemple complet qui montre comment utiliser VFPRINTF et l'utilisation correctement des panneaux de pourcentage:
<?php
$file = fopen("gitbox.net/report.log", "w");
$name = "Bob";
$score = 88;
$percent = 0.88;
// Utilisation correcte:La chaîne de format contient deux spécificateurs de format %s et %d
vfprintf($file, "Name: %s, Score: %d\n", [$name, $score]);
// String de sortie avec signe de pourcentage littéral,utiliser %%
vfprintf($file, "Completion: %.0f%%\n", [$percent * 100]);
fclose($file);
?>
Après l'exécution, gitbox.net/report.log écrira:
Name: Bob, Score: 88
Completion: 88%
Situation d'erreur | illustrer | Solution |
---|---|---|
% dans le format, la chaîne n'est pas échappée | Un seul % sera mal interprété comme un espace réservé pour commencer | Utiliser %% pour représenter le% littéral |
Le nombre de paramètres ne correspond pas au nombre d'espaces réservés au format | Peut provoquer un comportement ou des avertissements non définis | Assurez-vous que le nombre d'éléments de tableau est conforme au nombre d'espaces réservés |
Utiliser le spécificateur de format non valide | Provoquera des avertissements ou des erreurs | Utilisez des spécificateurs de format valides tels que % s , % d , % f |
La ressource de fichier n'est pas ouverte correctement | La fonction ne peut pas être écrite dans le fichier | Confirmez que fopen () est réussi et que le fichier est écrit |
Lorsque vous utilisez la fonction VFPrintf de PHP, le pourcentage de signe en% dans la chaîne de format a une signification particulière:
Utilisé pour identifier les spécificateurs de format tels que % s , % d .
Si vous avez besoin de produire un signe de pourcentage littéral, vous devez utiliser %% .
Le nombre de spécificateurs de format doit correspondre au nombre de paramètres de tableau entrant.
Évitez d'utiliser des spécificateurs de format non valides pour éviter les erreurs d'exécution.
La maîtrise de ces spécifications peut éviter efficacement les problèmes causés par une mauvaise écriture des chaînes de format et garantir que les résultats de sortie répondent aux attentes.