Fonction  fprintf() de PHP

Définition et usage La fonction fprintf()


PHP references des fonctions PHP

(PHP 5)

fprintf — Écrit une chaîne formatée dans un flux

La fonction fprintf()

La  fonction fprintf() écrit une chaîne formatée dans un flux de sortie spécifié (par exemple: fichier ou base de données).

Les paramètres arg1, arg2 et arg++ seront inséré avec le signe cent (%) dans la chaîne

La fonction de fprintf () renvoie la longueur de la chaîne écrite.

Syntaxe

              fprintf(stream,format,arg1,arg2,arg++)
           
 
Paramètre Description

stream

Requis. Spécifie où écrire/produire la chaîne. C’est un pointeur de système de fichiers de type resource qui est habituellement créé en utilisant la fonction fopen().

format

Requis. La chaîne de format est composée de zéro, une ou plusieurs directives : les caractères ordinaires (à l'exception de %) qui sont copiés directement dans le résultat, et des spécifications de conversion, qui exploitent chacune un des arguments passés après la chaîne de format. Ces formats s'appliquent à sprintf() et printf().

Chaque spécification de conversion est constituée d'un signe de pourcentage (%), suivi d'un ou plusieurs des éléments suivants, dans cet ordre :

  1. Le signe optionnel ne force pas le nombre à être positif/négatif mais force à utiliser le signe - ou + sur un nombre. Par défaut, seul le signe - est utilisé sur un nombre s'il est négatif. Ce spécificateur force également les nombres positifs à avoir un signe + d'attaché, et a été ajouté en PHP 4.3.0.
  2. Un remplisseur optionnel qui indique quel caractère sera utilisé pour compléter le résultat jusqu'à la longueur requise. Ce peut être le caractère d'espace, ou le caractère 0. Par défaut, le remplissage se fait avec des espaces. Un autre caractère de remplissage peut être spécifié en le préfixant avec un guillemet simple (') : voir les exemples ci-dessous.
  3. Un spécificateur d'alignement qui indique si le résultat doit être aligné à gauche ou à droite. Par défaut, le résultat est aligné à gauche. Le caractère - fera que le résultat sera justifié à gauche.
  4. Un nombre optionnel, spécificateur de taille indique le nombre minimum de caractères que cette conversion doit fournir en résultat.
  5. Un spécificateur de précision de la forme d'un point ("."), suivi par un nombre de décimales qui doivent être affichées pour les nombres décimaux. Lorsque vous utilisez ce spécificateur dans une chaîne, il agit comme un point de coupure, définissant une limite maximale de caractères de la chaîne.
  • Un spécificateur de type qui indique le type avec lequel l'argument sera traité. Plusieurs types possibles :
  • % : un caractère de pourcentage littéral. Aucun argument n'est nécessaire.
  • b : l'argument est traité comme un entier, et présenté comme un nombre binaire.
  • c : l'argument est traité comme un entier, et présenté comme le caractère de code ASCII correspondant.
  • d : l'argument est traité comme un entier, et présenté comme un nombre décimal signé.
  • e : l'argument est traité comme une notation scientifique (e.g. 1.2e+2). Le spécificateur de précision représente le nombre de chiffres après la virgule depuis PHP 5.2.1. Dans les versions antérieures, il a été pris comme nombre des chiffres significatifs (au moins un).
  • E : comme %e mais utilise des lettres en majuscule (i.e. 1.2E+2).
  • u : l'argument est traité comme un entier, et présenté comme un nombre décimal non signé.
  • f : l'argument est traité comme un nombre à virgule flottante (type float), et présenté comme un nombre à virgule flottante (tenant compte de la locale utilisée).
  • F : l'argument est traité comme un nombre à virgule flottante (type float), et présenté comme un nombre à virgule flottante (ne tenant pas compte de la locale utilisée). Disponible depuis PHP 4.3.10 et PHP 5.0.3.
  • g : raccourci pour %e et %f.
  • G : reccourci pour %E et %f.
  • o : l'argument est traité comme un entier, et présenté comme un nombre octal.
  • s : l'argument est traité et présenté comme une chaîne de caractères.
  • x : l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en minuscules).
  • X : l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en majuscules).

La chaîne de format supporte le numérotage et l'échange d'arguments. Par exemple :

  •  nombres négatifs sont marqués)
  • '(Spécifie quoi employer comme remplissage. Le défaut est l'espace. Doit être employé ainsi que le spécificateur de largeur. Exemple : % ' de x20s (ceci emploie « x » comme remplissage)
  • - (Gauche-justifie la valeur variable)
  • [0-9] (spécifie la largeur minimum tenue de sur la valeur variable)
  • . [0-9] (spécifie le nombre de chiffres décimaux ou de longueur maximum de chaîne)

Note : Si des valeurs additionnelles multiples de format sont employées, elles doivent être dans le même ordre comme ci-dessus:

Exemple #1 Échange d'arguments
<?php
$format = 'Il y a %d singes dans le %s';
printf($format, $num, $location);
?>

Ainsi, cet exemple peut afficher : "Il y a 5 singes dans le bananier". Mais imaginez que la chaîne de format soit créée dans un script séparé, comme une bibliothèque : cela arrive lorsqu'il faut internationaliser une application. Suivant la langue, il faudra peut-être écrire :

Exemple #2 Échange d'arguments (2)
<?php
$format = 'Le %s a %d singes';
printf($format, $num, $location);
?>

Ici, nous voyons bien le problème. L'ordre des arguments a été changé, et ne correspond plus à l'ordre des arguments dans le script PHP. Nous souhaitons laisser le code PHP intact, mais simplement indiquer dans la chaîne de formatage l'ordre dans lequel les arguments doivent être utilisés. La chaîne de format peut être réécrite ainsi :

Exemple #3 Échange d'arguments (3)
<?php
$format = 'Le %2$s a %1$d singes';
printf($format, $num, $location);
?>

Un des avantages est que vous pouvez désormais exploiter plusieurs fois les arguments sans les répéter. Ainsi :

Exemple #4 Échange d'arguments (4)
<?php
$format = 'Le %2$s a %1$d singes.
C\'est un beau %2$s avec %1$d singes.';
printf($format, $num, $location);
?>

arg1

Requis. L'argument à insérer au premier %-sign dans la chaîne de format

arg2

Facultatif. L'argument à insérer au deuxième %-sign dans la chaîne de format

arg++

Facultatif. L'argument à insérer au tiers, quatrième, etc. %-sign dans la chaîne de format


Note : S'il y a plus de % signe que des arguments, vous devez employer des textes d'attente. Un texte d'attente est inséré après les % de signe, et comprend le nombre d'argument et « \ $ ». Voir l'exemple trois.

astuce : Fonctions relatives : printf (), sprintf (), vfprintf (), vprintf (), et vsprintf ().


Exemple 1

Sélectionner le code

              <?php
$chaine = "bonjour";
$nombre = 123;
$file = fopen("test.txt","w");
echo fprintf($file,"%s monde. Jour numero %u",$chaine,$nombre);
?>

Le résultat du code ci-dessus sera :


              30
           
 

Allez dans le répertoire où se trouve le fichier php qui contient le code ci-dessus vous trouverez un fichier test.txt qui a été créé .

Le texte suivant sera écrit dans le fichier « test.txt » :

bonjour monde. Jour numero 123


Exemple 2 Sélectionner le code

              <?php
$nombre = 123;
$file = fopen("test.txt","w");
fprintf($file,"%f",$nombre);
?>

Le texte suivant sera écrit dans le fichier « test.txt » :


              123.000000
           
 

Exemple 3

Utilisation des textes d'attente :

Sélectionner le code

              <?php
$nombre = 123;
$file = fopen("test.txt","w");
fprintf($file,"Avec 2 décimales: %1\$.2f
\n Sans décimales: %1\$u",$nombre);
?>

Le texte suivant sera écrit dans le fichier « test.txt » :


              Avec 2 décimales : 123.00
Sans  décimales : 123
Exemple 4

fprintf(): Entiers avec zéros initiaux

Écrire la date formatée ISO dans le fichier date.txt:

Sélectionner le code

              <?php
              if (!($fp = fopen('date.txt', 'w'))) {
                  return;
              }
              $annee=2010;
              $mois=1;
              $jour=2;
              fprintf($fp, "%04d-%02d-%02d", $annee, $mois, $jour);
              // écrira la date formatée ISO dans le fichier date.txt
              ?>
           
 

Le texte suivant sera écrit dans le fichier « date.txt » :


              2010-01-02
           
 

Exemple 5

fprintf(): Format monétaire

Écriture de 6 octets dans le fichier currency.txt

Sélectionner le code

              <?php
              if (!($fp = fopen('currency.txt', 'w'))) {
                  return;
              }
              $money1 = 68.75;
              $money2 = 54.35;
              $money = $money1 + $money2;
              // echo $money affichera "123.1";
              $len = fprintf($fp, '%01.2f', $money);
              // écrira "123.10" dans le fichier currency.txt
               
              echo "écriture de $len octets dans le fichier currency.txt";
              // utilisez la valeur retournée par fprintf pour déterminer le
              nombre d'octets écrits
              ?>
           
 

Le texte suivant sera écrit dans le fichier « currency.txt» :


              123.10
           
 


Par carabde 22 Aout 2014