vfprintf () 는 PHP가 지정된 파일 스트림에 서식 한 문자열을 작성하기 위해 제공하는 함수입니다. fprintf () 와 달리 vfprintf ()는 매개 변수 목록 배열을 수신합니다. 이렇게하면 여러 유형의 데이터를 동적으로 스 플라이 싱 및 처리 할 때 더 유연하게 만듭니다.
함수 정의 :
int vfprintf ( resource $handle , string $format , array $args )
$ 핸들 : 파일 포인터 리소스, 일반적으로 fopen () 에 의해 반환됩니다.
$ 형식 : 형식 문자열.
$ args : 형식으로 삽입 할 데이터 배열.
vfprintf () 에서는 일련의 형식 식별자를 사용하여 다양한 유형의 출력을 지원할 수 있습니다. 일반적인 것들은 다음과 같습니다.
%s : 문자열
%D : 정수 (소수점)
%F : 부동 소수점 번호
%X : 16 진수 (소문자)
%X : 16 진수 (캡)
%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
보안 : 사용자 입력이 형식 문자열에 직접 스 플린을 스 플린트하여 형식 주입 공격을 방지하지 마십시오.
배열의 순서는 정확해야합니다 . 매개 변수 배열은 형식 문자열에 하나씩 해당해야하며 순서는 잘못 될 수 없습니다.
파일 권한 : 작성된 파일에 쓰기 권한이 있는지 확인하십시오. 그렇지 않으면 fopen () 또는 vfprintf () 가 실패하게됩니다.
다국어 적응 : 출력을 형식화 할 때 sprintf () 및 vprintf () 로 사전 처리 할 수 있습니다.