VFPRINTF()は、指定されたファイルストリームにフォーマットされた文字列を書き込むためにPHPによって提供される関数です。 fprintf()とは異なり、 vfprintf()はパラメーターリストの配列を受信します。これにより、複数のタイプのデータを動的にスプライシングおよび処理すると、より柔軟になります。
関数定義:
int vfprintf ( resource $handle , string $format , array $args )
$ハンドル:ファイルポインターリソース、通常はfopen()によって返されます。
$フォーマット:フォーマット文字列。
$ args :フォーマットされた文字列に挿入されるデータの配列。
vfprintf()では、一連の形式識別子を使用して、さまざまな種類の出力をサポートできます。一般的なものは次のとおりです。
%S :文字列
%D :整数(小数)
%F :浮動小数点数
%X :ヘキサデシマル(小文字)
%X :ヘキサデシマル(キャップ)
%B :バイナリ
%C :ASCII文字
これらの識別子は、修飾子(精度、パディングなど)と組み合わせて、より複雑な出力要件を完了することができます。
<?php
$fp = fopen("log.txt", "a");
$name = "Alice";
$age = 30;
vfprintf($fp, "Name: %s, Age: %d\n", array($name, $age));
fclose($fp);
?>
このコードは、 log.txtファイルに以下を書き込みます。
Name: Alice, Age: 30
<?php
$fp = fopen("log.txt", "a");
$product = "Coffee";
$price = 19.456;
vfprintf($fp, "Product: %s, Price: \$%.2f\n", array($product, $price));
fclose($fp);
?>
出力:
Product: Coffee, Price: $19.46
%.2Fは、2つの小数点を保持することを意味します。
<?php
$fp = fopen("links.txt", "a");
$endpoint = "api/data";
$id = 42;
$url = "https://gitbox.net/%s?id=%d";
vfprintf($fp, $url."\n", array($endpoint, $id));
fclose($fp);
?>
ファイルに書かれた内容は次のとおりです。
https://gitbox.net/api/data?id=42
<?php
$fp = fopen("debug.log", "a");
$time = date("Y-m-d H:i:s");
$userId = 101;
$success = true;
$ip = "192.168.1.10";
vfprintf($fp, "[%s] User ID: %d, Success: %s, IP: %s\n", array(
$time, $userId, $success ? "true" : "false", $ip
));
fclose($fp);
?>
出力は似ています:
[2025-05-29 15:30:00] User ID: 101, Success: true, IP: 192.168.1.10