Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP fgets() 함수 완벽 정리 – 파일에서 한 줄씩 읽는 방법


fgets() 함수는 열려 있는 파일에서 한 줄(line)을 읽어 반환하는 PHP 내장 함수입니다. 파일 포인터(file_pointer)가 가리키는 파일로부터 최대 length - 1 바이트만큼의 문자열을 읽어 돌려줍니다.

실패할 경우 false를 반환하며, length 매개변수를 생략하면 개행 문자나 파일 끝(EOF)을 만날 때까지 읽습니다.

구문(Syntax)

fgets (file_pointer, length);

매개변수(Parameters)

  • file_pointer − 유효한 파일 포인터여야 하며, 반드시 fopen() 또는 fsockopen() 함수로 성공적으로 연 파일을 가리켜야 합니다.

  • length − 다음 세 가지 조건 중 가장 먼저 충족되는 시점에 읽기가 종료됩니다.
    ① length - 1 바이트를 모두 읽은 경우
    ② 개행 문자(newline)를 만난 경우
    ③ 파일 끝(EOF)에 도달한 경우

반환값(Return)

fgets() 함수는 file_pointer가 가리키는 파일에서 읽은 최대 length - 1 바이트 길이의 문자열을 반환합니다. 더 이상 읽을 데이터가 없거나 오류가 발생하면 false를 반환합니다.

예제 1

다음 예제에서는 "This is it!"이라는 텍스트가 담긴 one.txt 파일을 대상으로 fgets()를 사용합니다. while 루프와 feof()를 함께 활용해 파일 전체를 한 줄씩 읽어 출력하는 전형적인 패턴입니다.

<?php
   $file_pointer = @fopen("/new/one.txt", "w");
   if ($file_pointer) {
      while (!feof($file_pointer)) {
         $buffer = fgets($file_pointer, 512);
         echo $buffer;
      }
      fclose($file_pointer);
   }
?>

출력 결과

This is it!

이번에는 또 다른 예제를 살펴보겠습니다.

예제 2

아래 예제는 "This is demo text"라는 텍스트가 들어 있는 new.txt 파일을 읽기 모드("r")로 연 뒤, fgets()로 첫 번째 줄을 그대로 가져와 출력합니다.

<?php
   $file_pointer = fopen("new.txt","r");
   $res = fgets($file_pointer);
   echo $res;
   fclose($file_pointer);
?>

출력 결과

This is demo text

정리

fgets()는 로그 파일 분석, 설정 파일 읽기, 대용량 텍스트 파일을 메모리에 한 번에 올리지 않고 순차적으로 처리할 때 특히 유용합니다. 파일 작업이 끝난 후에는 반드시 fclose()로 리소스를 해제하는 습관을 들이는 것이 좋습니다.