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:// 소켓을 만들 때 개발자는 이 경고를 감지하고 표시하지 않을 책임이 있습니다.
기타
- file() - 전체 파일을 배열로 읽습니다.
- fgets() - 파일 포인터에서 라인 가져오기
- fread() - 바이너리 안전 파일 읽기
- readfile() - 파일을 출력합니다
- file_put_contents() - 파일에 데이터 쓰기
- stream_get_contents() - 스트림의 나머지 부분을 문자열로 읽습니다.
- stream_context_create() - 스트림 컨텍스트에서 생성됨
- $http_response_header