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()로 리소스를 해제하는 습관을 들이는 것이 좋습니다.