file_get_contents 함수

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

file_get_contents — 전체 파일을 문자열로 읽습니다.


설명

file_get_contents(
    string $filename,
    bool $use_include_path = false,
    ?resource $context = null,
    int $offset = 0,
    ?int $length = null
): string|false
                

이 함수는 file_get_contents()가 지정된 offset에서 시작하여 length 바이트까지 문자열로 파일을 반환한다는 점을 제외하면 file()과 유사합니다. 실패 시 file_get_contents()false를 반환합니다.

file_get_contents()는 파일의 내용을 문자열로 읽는 데 선호되는 방법입니다. 성능을 향상시키기 위해 OS에서 지원하는 경우 메모리 매핑 기술을 사용합니다.

메모: 공백과 같은 특수 문자가 있는 URI를 여는 경우 urlencode()를 사용하여 URI를 인코딩해야 합니다.


매개변수

filename
읽을 파일의 이름입니다.
use_include_path

메모: FILE_USE_INCLUDE_PATH 상수를 사용하여 include path 검색을 트리거할 수 있습니다. FILE_USE_INCLUDE_PATH가 int이기 때문에 엄격한 입력이 활성화된 경우에는 불가능합니다. 대신 true를 사용하십시오.

context
stream_context_create()로 생성된 유효한 컨텍스트 리소스. 사용자 정의 컨텍스트를 사용할 필요가 없으면 이 매개변수를 null로 건너뛸 수 있습니다.
offset
원본 스트림에서 읽기가 시작되는 오프셋입니다. 음수 오프셋은 스트림 끝에서 계산됩니다.

원격 파일에서는 찾기(offset)가 지원되지 않습니다. 로컬이 아닌 파일에서 검색을 시도하면 작은 오프셋으로 작동할 수 있지만 버퍼링된 스트림에서 작동하기 때문에 예측할 수 없습니다.

length
읽은 데이터의 최대 길이입니다. 기본값은 파일 끝에 도달할 때까지 읽는 것입니다. 이 매개변수는 필터에 의해 처리되는 스트림에 적용됩니다.

반환 값

이 함수는 읽은 데이터를 반환하거나 실패 시 false를 반환합니다.

경고 이 함수는 부울 false을 반환할 수 있지만 거짓으로 평가되는 부울이 아닌 값을 반환할 수도 있습니다. 자세한 내용은 부울 섹션을 참조하세요. 이 함수의 반환 값을 테스트하려면 === 연산자를 사용하십시오.


오류/예외

filename을 찾을 수 없거나 length가 0보다 작거나 스트림에서 지정된 offset을 찾는 데 실패하면 E_WARNING 수준 오류가 생성됩니다.

디렉토리에서 file_get_contents()가 호출되면 Windows에서는 E_WARNING 수준 오류가 생성되고 다른 운영 체제에서는 PHP 7.4에서도 생성됩니다.


변경 로그

버전 설명
8.0.0 length는 이제 nullable입니다.
7.1.0 음수 offset에 대한 지원이 추가되었습니다.

Examples

예제 #1 웹 사이트의 홈페이지 소스 가져오기 및 출력

                  
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
                  
                

예제 #2 include_path 내에서 검색

                  
<?php
// If strict types are enabled i.e. declare(strict_types=1);
$file = file_get_contents('./people.txt', true);
// Otherwise
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
                  
                

예제 #3 파일의 섹션 읽기

                  
<?php
// Read 14 characters starting from the 21st character
$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);
var_dump($section);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

string(14) "lle Bjori Ro"
                

예제 #4 스트림 컨텍스트 사용

                  
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>
                  
                

메모

참고: 이 함수는 binary-safe입니다.

팁: fopen 래퍼가 활성화된 경우 URL을 이 함수와 함께 파일 이름으로 사용할 수 있습니다. 파일 이름을 지정하는 방법에 대한 자세한 내용은 fopen()을 참조하십시오. 다양한 래퍼의 기능, 사용법에 대한 참고 사항, 제공할 수 있는 미리 정의된 변수에 대한 정보에 대한 링크는 지원되는 프로토콜 및 래퍼를 참조하세요.

경고: SSL을 사용할 때 Microsoft IIS는 close_notify 표시기를 보내지 않고 연결을 닫음으로써 프로토콜을 위반합니다. 데이터 끝에 도달하면 PHP는 이것을 "SSL: 치명적인 프로토콜 오류"로 보고합니다. 이 문제를 해결하려면 error_reporting 값을 경고가 포함되지 않은 수준으로 낮춰야 합니다. PHP는 https:// 래퍼를 사용하여 스트림을 열 때 버그가 있는 IIS 서버 소프트웨어를 감지할 수 있으며 경고를 표시하지 않습니다. fsockopen()을 사용하여 ssl:// 소켓을 만들 때 개발자는 이 경고를 감지하고 표시하지 않을 책임이 있습니다.


기타