fprintf / vfprintf în PHP

Scrie un text formatat după un șablon direct într-un fișier sau flux deschis.

Sintaxă
fprintf($stream, string $format, mixed ...$values): int

Ce face fprintf / vfprintf

fprintf funcționează ca printf, dar scrie în fluxul primit ca prim parametru: un fișier deschis cu fopen, STDOUT sau STDERR într-un script rulat din linia de comandă.

vfprintf face același lucru, dar primește valorile într-un tablou, ca vsprintf.

Parametri

Parametru Descriere
$stream Fluxul în care se scrie (rezultatul lui fopen, STDOUT, STDERR).
$format Șablonul, cu marcaje %s, %d, %.2f etc.
$values Valorile care înlocuiesc marcajele (la vfprintf: un tablou).

Ce returnează

Numărul de octeți scriși.

Exemple

Exemplul 1: Raport scris într-un fișier

<?php
$f = fopen("raport.txt", "w");
fprintf($f, "%-10s %8.2f lei\n", "Ianuarie", 1520.5);
vfprintf($f, "%-10s %8.2f lei\n", ["Februarie", 980]);
fclose($f);

echo file_get_contents("raport.txt");

Rezultat

Ianuarie    1520.50 lei
Februarie    980.00 lei

Exemplul 2: Mesaje de eroare într-un script de linie de comandă

Erorile trimise în STDERR nu se amestecă cu rezultatul normal al scriptului.

<?php
$fisier = "date.csv";
if (!file_exists($fisier)) {
    fprintf(STDERR, "Eroare: fișierul %s lipsește\n", $fisier);
    exit(1);
}

Rezultat posibil (diferă la fiecare rulare)

Eroare: fișierul date.csv lipsește

Greșeli frecvente

  • Dai numele fișierului în loc de fluxul deschis: fprintf("raport.txt", ...). Primești TypeError. Deschide întâi fișierul cu fopen.

Comenzi înrudite

  • printf: Afișează un text formatat după un șablon, de exemplu numere cu un anumit număr de zecimale.
  • vsprintf / vprintf: Construiește (vsprintf) sau afișează (vprintf) un text formatat după un șablon, cu valorile luate dintr-un tablou.
  • file_put_contents: Scrie un text într-un fișier. Creează fișierul dacă nu există.