>  기사  >  백엔드 개발  >  php fgets가 줄 끝의 개행 문자를 무시하는 이유와 해결책

php fgets가 줄 끝의 개행 문자를 무시하는 이유와 해결책

PHPz
PHPz원래의
2023-03-20 16:12:512191검색

PHP는 웹 애플리케이션 및 동적 웹사이트 개발에 사용되는 인기 있는 프로그래밍 언어입니다. 파일 입력을 처리할 때 fgets() 함수는 일반적으로 파일에서 텍스트 한 줄을 읽는 데 사용됩니다. 그러나 fgets() 함수는 줄 끝의 개행 문자를 무시하는 경우가 있는데, 이로 인해 프로그램 오류가 발생하고 예측할 수 없는 결과가 발생할 수 있습니다. 이번 글에서는 이 문제의 원인과 해결 방법을 살펴보겠습니다.

fgets() 함수의 기능 및 사용법

PHP에서 fgets() 함수는 파일 포인터에서 텍스트 한 줄을 읽는 데 사용됩니다. 이 함수의 구문은 다음과 같습니다.

string fgets ( resource $handle [, int $length ] )

그 중 $handle 매개변수는 열린 파일 포인터이고 $length 매개변수는 선택사항이며 파일에서 읽은 최대 바이트 수를 나타냅니다. $length 매개변수를 생략하면 줄 끝의 개행 문자를 포함하여 텍스트의 전체 줄을 읽습니다. fgets() 함수의 반환 값은 줄 끝의 개행 문자를 포함하여 읽은 텍스트 줄입니다.

fgets() 함수가 줄 끝의 줄 바꿈 문자를 무시하는 이유

경우에 따라 fgets() 함수가 줄 끝의 줄 바꿈 문자를 무시할 수 있습니다. 예를 들면 다음과 같습니다.

  1. The 파일이 잘렸거나 불완전하게 작성되어 줄이 끝났습니다. 개행 문자가 없습니다.
  2. Windows 시스템에서 텍스트 파일의 줄 끝은 일반적으로 캐리지 리턴(CR)과 줄 바꿈(LF)으로 구성되는 반면, Linux 및 Unix 시스템에서는 텍스트 파일의 줄 끝은 다음과 같습니다. 줄 바꿈(LF)만 있습니다. Windows 시스템의 Linux 또는 Unix 시스템에서 텍스트 파일을 읽는 경우 fgets() 함수는 줄 끝의 줄 바꿈을 무시합니다.

fgets() 함수가 개행 문자를 무시하는 문제를 해결하는 방법

이 문제를 해결하려면 다음 두 가지 방법을 사용할 수 있습니다.

방법 1: Trim() 함수를 사용하여 개행 문자를 제거합니다. at the end of the line

trim() 함수 PHP에 내장된 함수로 문자열 양 끝의 공백이나 특정 문자를 제거할 수 있습니다. fgets() 함수에서 반환된 텍스트 문자열을 처리하기 위해 Trim() 함수를 사용하는 경우 줄 끝의 개행 문자가 무시되지 않도록 할 수 있습니다. 다음은 샘플 코드입니다.

$file = fopen("filename.txt", "r");
while(!feof($file)){
   $line = trim(fgets($file));
   echo $line . "<br>";
}
fclose($file);

방법 2: Windows 시스템에서 fread() 및 str_replace() 함수 사용

Windows 시스템에서 Linux 또는 Unix 시스템의 텍스트 파일을 읽고 끝 부분을 유지하려는 경우 line 개행 문자의 경우 fread() 및 str_replace() 함수를 사용할 수 있습니다. fread() 함수는 파일에서 지정된 바이트 수를 읽을 수 있는 반면, str_replace() 함수는 문자열에서 지정된 문자를 바꿀 수 있습니다. 다음은 샘플 코드입니다.

$file = fopen("filename.txt", "r");
while(!feof($file)){
   $line = fread($file, 10000);
   $line = str_replace("\n", "\r\n", $line);
   echo $line . "<br>";
}
fclose($file);

위의 두 방법 모두 줄 끝의 개행 문자를 무시하는 fgets() 함수의 문제를 해결할 수 있습니다. 선택하는 방법은 특정 프로그램 요구 사항과 파일 형식에 따라 다릅니다.

Summary

fgets() 함수는 파일 줄 텍스트를 읽는 데 사용되는 PHP의 일반적인 함수이지만 줄 끝의 개행 문자를 무시하여 프로그램 오류 및 예측할 수 없는 결과를 초래하는 경우가 있습니다. 이 문제를 해결하기 위해 Trim() 함수나 fread() 및 str_replace() 함수를 사용하여 줄 끝의 개행 문자를 처리할 수 있습니다. 물론 이러한 기능을 사용할 때는 파일 인코딩, 시스템 환경 등의 요소에도 주의를 기울여 다른 문제가 발생하지 않도록 해야 합니다.

위 내용은 php fgets가 줄 끝의 개행 문자를 무시하는 이유와 해결책의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.