file_get_contents

(PHP 4 >= 4.3.0, PHP 5)

file_get_contentsЧитает содержимое файла в строку

Описание

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

Данная функция похожа на функцию file() с той только разницей, что file_get_contents() возвращает содержимое файла в строке, начиная с указанного смещения offset и до maxlen байт. В случае неудачи, file_get_contents() вернёт FALSE.

Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует технику отображения файла в память (memory mapping), если она поддерживается вашей операционной системой.

Замечание:

Если вы открываете URI содержащий спецсимволы, такие как пробел, вам нужно закодировать URI при помощи urlencode().

Список параметров

filename

Имя читаемого файла.

use_include_path

Замечание:

Начиная с версии PHP 5 можно использовать константу FILE_USE_INCLUDE_PATH для поиска файла в include path.

context

Корректный ресурс контекста, созданный с помощью функции stream_context_create(). Если в использовании особого контекста нет необходимости, можно пропустить этот параметр передав в него значение NULL.

offset

Смещение, с которого начнется чтение оригинального потока.

Поиск смещения (offset) не поддерживается при работе с удаленными файлами. Попытка поиска смещения на нелокальных файлах может работать при небольших смещениях, но этот результат является непредсказуемым, так как он работает на буферизованном потоке.

maxlen

Максимальный размер читаемых данных. По умолчанию чтение осуществляется пока не будет достигнут конец файла. Учтите, что этот параметр применяется и к потоку с фильтрами.

Возвращаемые значения

Функция возвращает прочтенные данные или FALSE в случае возникновения ошибки.

Ошибки

Будет сгенерирована ошибка уровня E_WARNING, если параметр maxlength меньше нуля или поиск по смещению offset в потоке завершается неудачно.

Примеры

Пример #1 Получить и вывести исходный код домашней страницы вебсайта

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

Пример #2 Поиск файлов в include_path

<?php
// <= PHP 5
$file file_get_contents('./people.txt'true);
// > PHP 5
$file file_get_contents('./people.txt'FILE_USE_INCLUDE_PATH);
?>

Пример #3 Чтение секции файла

<?php
// Читаем 14 символов, начиная с 21 символа
$section file_get_contents('./people.txt'NULLNULL2014);
var_dump($section);
?>

Результатом выполнения данного примера будет что-то подобное:

string(14) "lle Bjori Ro"

Пример #4 Использование потоковых контекстов

<?php
// Создаем поток
$opts = array(
  
'http'=>array(
    
'method'=>"GET",
    
'header'=>"Accept-language: en\r\n" .
              
"Cookie: foo=bar\r\n"
  
)
);

$context stream_context_create($opts);

// Открываем файл с помощью установленных выше HTTP-заголовков
$file file_get_contents('http://www.example.com/'false$context);
?>

Список изменений

Версия Описание
5.1.0 Добавлены аргументы offset и maxlen.
5.0.0 Добавлена поддержка контекста.

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Подсказка

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).

Внимание

При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как "SSL: Fatal Protocol Error" в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP версий 4.3.7 и старше умеет определять, что на стороне сервера находится проблемный IIS при открытии потока с помощью обертки https:// и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.

Смотрите также

Коментарии

Автор:
file_get_contents can do a POST, create a context for that first:

<?php

$opts 
= array('http' =>
  array(
   
'method'  => 'POST',
   
'header'  => "Content-Type: text/xml\r\n".
     
"Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
   
'content' => $body,
   
'timeout' => 60
 
)
);
                       
$context  stream_context_create($opts);
$url 'https://'.$https_server;
$result file_get_contents($urlfalse$context, -140000);

?>
2012-04-16 15:17:20
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
I'm not sure why @jlh was downvoted, but I verified what he reported.

>>> file_get_contents($path false, null, 5, null)
=> ""
>>> file_get_contents($path, false, null, 5, 5)
=> "r/bin"
2021-07-28 00:11:34
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
Автор:
if the connection is
content-encoding: gzip
and you need to manually ungzip it, this is apparently the key
$c=gzinflate( substr($c,10,-8) );
(stolen from the net)
2021-08-24 22:53:54
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
//从指定位置获取指定长度的文件内容
function file_start_length($path,$start=0,$length=null){
    if(!file_exists($path)) return false;
    $size=filesize($path);
    if($start<0) $start+=$size;
    if($length===null) $length=$size-$start;
    return file_get_contents($path, false, null, $start, $length );
}
2021-09-14 06:22:30
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
Автор:
There's barely a mention on this page but the $http_response_header will be populated with the HTTP headers if your file was a link. For example if you're expecting an image you can do this:

<?php
$data 
file_get_contents('https://example.net/some-link');

$mimetype null;
foreach (
$http_response_header as $v) {
    if (
preg_match('/^content\-type:\s*(image\/[^;\s\n\r]+)/i'$v$m)) {
       
$mimetype $m[1];
    }
}

if (!
$mimetype) {
   
// not an image
}
2022-09-20 15:54:04
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
Note that if an HTTP request fails but still has a response body, the result is still false, Not the response body which may have more details on why the request failed.
2023-03-16 18:20:42
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
To prevent mixed content most browsers/functions will use the protocol already used if you specify only // instead of http:// or https://. This is not the case with file_get_contents. You must specify the protocol. 

This does not work:
<?php
$jsonData 
file_get_contents('//example.com/file.json');
print 
$jsonData;
?>

Specifying only 'example.com/file.json' without the double slash does not work either.

When running on Apache 2.4 , using $_SERVER['REQUEST_SCHEME'] is a better way to be protocol agnostic.
<?php
$jsonData 
file_get_contents($_SERVER['REQUEST_SCHEME'].'://example.com/file.json');
print 
$jsonData;
?>

If using another web server, you may have to get the protocol another way or hard code it.
2023-08-08 13:55:43
http://php5.kiev.ua/manual/ru/function.file-get-contents.html
Автор:
If doing a negative offset to grab the end of a file and the file is shorter than the offset, then file_get_contents( ) will return false.

If you want it to just return what is available when the file is shorter than the negative offset, you could try again.

For example...

$contents = file_get_contents( $log_file, false, null, -4096 ); // Get last 4KB

if ( false === $contents ) {
    // Maybe error, or maybe file less than 4KB in size.

    $contents = file_get_contents( $log_file, false, null );

    if ( false === $contents ) {
        // Handle real error.
    }
}
2023-11-29 03:58:14
http://php5.kiev.ua/manual/ru/function.file-get-contents.html

    Поддержать сайт на родительском проекте КГБ