현재 위치: > 최신 기사 목록> VFPRINTF를 사용하여 여러 데이터 유형의 형식 컨텐츠를 출력하십시오.

VFPRINTF를 사용하여 여러 데이터 유형의 형식 컨텐츠를 출력하십시오.

gitbox 2025-05-29

vfprintf () 란 무엇입니까?

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 문자

이 식별자는보다 복잡한 출력 요구 사항을 완료하기 위해 수정 자 (예 : 정밀, 패딩 등)와 결합 할 수 있습니다.


실제 사례

예 1 : 문자열과 정수를 쓰십시오

 <?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

예제 2 : 부동 소수점 번호를 작성하고 두 십자 자리 두 자리를 유지하십시오.

 <?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 여기서는 두 십수 자리를 유지하는 것을 의미합니다.


예 3 : URL을 동적으로 생성하고 파일을 작성합니다

 <?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

예제 4 : 혼합 유형 쓰기 로그

 <?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

팁과 예방 조치

  1. 보안 : 사용자 입력이 형식 문자열에 직접 스 플린을 스 플린트하여 형식 주입 공격을 방지하지 마십시오.

  2. 배열의 순서는 정확해야합니다 . 매개 변수 배열은 형식 문자열에 하나씩 해당해야하며 순서는 잘못 될 수 없습니다.

  3. 파일 권한 : 작성된 파일에 쓰기 권한이 있는지 확인하십시오. 그렇지 않으면 fopen () 또는 vfprintf () 가 실패하게됩니다.

  4. 다국어 적응 : 출력을 형식화 할 때 sprintf ()vprintf () 로 사전 처리 할 수 ​​있습니다.