[PHP] 파일의 내용을 한 라인씩 읽기 fgets()

2022. 9. 27. 00:42Program/PHP

093_PHP 파일의 내용으 한 라인씩 읽기 fgets()

[요약]

  • 파일의 내용을 한 라인씩 읽는 함수 fgets() 에 대해 알아보자.

파일의 내용을 한 라인씩 불러오는 방법에 대해 알아보자.

파일을 한 라인씩 불러오는 것은 보통 주소 정보를 최신화할 때 사용한다.

우체국 홈페이지에서는 최신 주소 정보를 파일로 제공하며, 개발자는 그 파일을 한 줄씩 읽어 자사 서비스의 주소 데이터베이스를 최신화하는데 사용한다.

한 라인씩 불러오는 기능을 구현하기 위해 여러 라인의 내용을 helloworld.txt 파일에 입력한다.

 

다음의 텍스트를 helloworld.txt에 입력 후 저장한다.

line hello wolrd 1
line hello wolrd 2
line hello wolrd 3
line hello wolrd 4
line hello wolrd 5

이제 helloworld.txt 의 파일 내용을 한 줄씩 불러오자.

파일을 한 줄씩 읽어올 때는 fgets() 함수를 사용한다.

fread() 함수에서 사용하는 아규먼트와 똑같은 아규먼트를 사용한다.


[fgets() 함수 사용 방법]

$fopen = fopen('파일 경로 및 파일명', 'r+');
fread = fgets($fopen, '불러올 용량');

fread()와 fgets()의 차이는 fgets() 함수의 경우 줄 바뀜을 만나면 가져오는 것을 종료하는 것이다.

따라서 한 줄만 가져올 수 있다.

불러올 용량은 어느 정도의 욜양에서 줄 바뀜이 일어날 지 알 수 없으므로 적당한 선에서 충분한 용량을 제시하는 편이 좋다.

또한 더 불러올 내용이 없다면 fgets() 함수는 false를 반환한다.

우리는 다섯 줄을 입력했으므로 fgest() 함수를 5번 실행하면 되지만, fgets() 함수를 사용할 때는 파일이 몇 줄 있는지 알지 못하는 상황이므로 반복문을 이용하여 false를 반환하면 반복문에서 빠져나오도록 해야한다.

 

다음은 앞에서 작성한 helloworld.txt 파일을 한 줄씩 읽어오는 예제이다.

[예제: 96_fgets.php ]

<?php
    $fileName = "helloworld.txt";
    if (file_exists($fileName)) {
      $fopen = fopen($fileName, 'r');

      // 읽어올 용량 설정 상황에 따라 다른값 넣어야 함
      $readByte = 512;
      if ($fopen) {
        while (($fgets = fgets($fopen, $readByte))) {
          echo $fgets . "<br>";
        }
      }
    }
?>

실행결과

 

 

 


 

 

 

초보자를 위한 PHP 200제
김태영 지음 | 정보문화사