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