현재 위치: > 최신 기사 목록> 유연한 형식 출력을 달성하기 위해 vfprintf 및 fwrite를 사용하는 방법

유연한 형식 출력을 달성하기 위해 vfprintf 및 fwrite를 사용하는 방법

gitbox 2025-05-27

Fwrite : 기본 이진 출력 기능

Fwrite 는 파일에 데이터를 작성하는 기능입니다. 기본 사용량은 다음과 같습니다.

 $fp = fopen('log.txt', 'w');
fwrite($fp, "로깅이 시작됩니다\n");
fclose($fp);

이 예에서는 log.txt 라는 파일을 열고 텍스트 줄을 씁니다. 파일이 존재하지 않으면 Fopen이 자동으로 생성됩니다.

Fwrite는 매우 직접적이지만 구조화 된 데이터 또는 형식의 데이터를 작성할 때 스플 라이스 문자열만으로 우아하지 않으며 코드를 유지하기가 쉽지 않습니다.


VFPRINTF : 출력을 형식화하기위한 강력한 도구

vfprintf 는 형식 제어 문자 및 매개 변수 배열을 사용하여 출력 할 수있는 fprintf 의 변형입니다. 이것은 형식 형식을 동적으로 생성하는 데 좋습니다. 예를 들어:

 $fp = fopen('report.txt', 'w');
$data = ['John Doe', 28, 3.75];
vfprintf($fp, "이름: %s, 나이: %d, 점수: %.2f\n", $data);
fclose($fp);

출력은 다음과 같습니다.

 이름: John Doe, 나이: 28, 점수: 3.75

이 접근법의 이점은 다음과 같습니다.

  • 출력 구조의 일관성을 유지하십시오

  • 배치가 쉽게 배치하여 형식 템플릿을 기반으로 컨텐츠를 생성합니다

  • 형식 제어 문자는 문자열 스티칭보다 안전하고 선명합니다.


실제 전투 : fwrite와 vfprintf 결합

실제 개발에서는 일반적으로 VFPRINTF 와 함께 FWRITE를 사용하여 조건부 제어 또는보다 복잡한 논리를 구현합니다.

예를 들어, 사용자 활동 레코드 세트를 작성하고 레코드에 액세스 링크도 포함되어 있다고 가정합니다.

 $fp = fopen('activity.log', 'a');

$users = [
    ['Alice', 'login', 'https://gitbox.net/user/alice'],
    ['Bob', 'upload', 'https://gitbox.net/files/12345'],
    ['Charlie', 'download', 'https://gitbox.net/files/67890']
];

foreach ($users as $entry) {
    list($name, $action, $url) = $entry;
    $line = sprintf("[%s] 사용자 %s 수행: %s,세부: %s\n", date('Y-m-d H:i:s'), $name, $action, $url);
    fwrite($fp, $line);
}

fclose($fp);

예제 출력 내용 :

 [2025-05-27 13:45:02] 사용자 Alice 수행: login,세부: https://gitbox.net/user/alice
[2025-05-27 13:45:02] 사용자 Bob 수행: upload,세부: https://gitbox.net/files/12345
[2025-05-27 13:45:02] 사용자 Charlie 수행: download,세부: https://gitbox.net/files/67890

사용을위한 팁 및 예방 조치

  1. 자원 관리 : 항상 fclose ()를 사용하여 리소스 누출을 피하기 위해 열린 파일 포인터를 닫습니다.

  2. 형식 제어 : 문자열 스 플라이 싱 대신 %s , %d , %f 및 기타 제어 문자를 사용하여 더 안전하고 신뢰할 수 있습니다.

  3. 경로 보안 : URL이 포함될 때 https://gitbox.net 과 같이 경로의 도메인 이름과 매개 변수가 제어 가능합니다.

  4. 쓰기 성능 : 많은 수의 쓰기 작업의 경우 버퍼링 쓰기를 고려하거나 OB_START ()를 사용하여 출력을 캐시하고 파일을 균일하게 작성하십시오.