fprintf

fprintf($stream, $format, ...$values)

Zapisuje tekst zbudowany według formatu (dokładnie jak w sprintf()) do otwartego pliku lub strumienia. Zwraca liczbę zapisanych bajtów.

Parametry

  • $stream – plik lub strumień otwarty do zapisu, na przykład z fopen().
  • $format – format z symbolami zastępczymi (%s, %d, %.2f…), taki sam jak w sprintf().
  • $values – wartości dla symboli zastępczych.

Przykłady

$file = fopen("php://memory", "w+");
$written = fprintf($file, "%s: %5.1f %%\n", "VAT", 23);
echo $written; // 13
rewind($file);
echo fgets($file); // VAT:  23.0 %\n
fclose($file);
// zapis do logu
// $log = fopen(__DIR__ . "/app.log", "a");
// fprintf($log, "[%s] %s\n", date("Y-m-d H:i:s"), $message);

Na co uważać

  • Zwraca liczbę bajtów, nie znaków. Polskie litery zajmują w UTF-8 dwa bajty.
  • Mniej wartości, niż format ma symboli zastępczych: PHP 7.4 wypisuje ostrzeżenie, nic nie zapisuje i zwraca false, PHP 8 rzuca wyjątek ArgumentCountError.
  • Znak procentu zapisuje się jako %%.
  • Do wierszy CSV służy fputcsv(), które samo dba o separatory i cudzysłowy.

Powiązane funkcje:
sprintf()
printf()
vfprintf()
fwrite()
fopen()