vfprintf()是PHP 提供的一個函數,用於將格式化的字符串寫入到指定的文件流中。與fprintf()不同的是, vfprintf()接收的是一個數組形式的參數列表。這使得在動態拼接和處理多種類型的數據時更加靈活。
函數定義:
int vfprintf ( resource $handle , string $format , array $args )
$handle :文件指針資源,通常由fopen()返回。
$format :格式化字符串。
$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表示保留兩位小數。
<?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