# file_get_contents

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

file_get_contents — 将整个文件读入一个字符串

### 说明

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

和 file() 一样，只除了 file_get_contents() 把文件读入一个字符串。将在参数 `offset` 所指定的位置开始读取长度为 `maxlen` 的内容。如果失败，file_get_contents() 将返回 `FALSE`。

file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

> Note:

> 如果要打开有特殊字符的 URL （比如说有空格），就需要使用 urlencode() 进行 URL 编码。

### 参数

`filename`

  要读取的文件的名称。

`use_include_path`

  > Note:

  > As of PHP 5 the `FILE_USE_INCLUDE_PATH` can be used to trigger include path search.

`context`

  A valid context resource created with stream_context_create(). 如果你不需要自定义 context，可以用 `NULL` 来忽略。

`offset`

  The offset where the reading starts on the original stream.

  Seeking (`offset`) is not supported with remote files. Attempting to seek on non-local files may work with small offsets, but this is unpredictable because it works on the buffered stream.

`maxlen`

  Maximum length of data read. The default is to read until end of file is reached. Note that this parameter is applied to the stream processed by the filters.

### 返回值

The function returns the read data 或者在失败时返回 `FALSE`.

### 错误／异常

An `E_WARNING` level error is generated if either `maxlength` is less than zero, or if seeking to the specified `offset` in the stream fails.

### 范例

Example #1 Get and output the source of the homepage of a website

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

Example #2 Searching within the include_path

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

Example #3 Reading a section of a file

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

以上例程的输出类似于：

    string(14) "lle Bjori Ro"

Example #4 Using stream contexts

    <?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);
    ?>

### 更新日志

版本 | 说明
--- | ---
5.1.0 | Added the `offset` and `maxlen` parameters.
5.0.0 | Added context support.

### 注释

> Note: 此函数可安全用于二进制对象。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

Warning

使用 SSL 时，Microsoft IIS 会违反协议不发送close_notify标记就关闭连接。PHP 会在到达数据尾端时报告“SSL: Fatal Protocol Error”。 要解决此问题，error_reporting 应设定为降低级别至不包含警告。 PHP 4.3.7 及更高版本可以在使用 https:// 包装器打开流时检测出有问题的 IIS 服务器软件 并抑制警告。在使用 fsockopen() 创建 ssl:// 套接字时, 开发者需检测并抑制此警告。

### 参见

- file() - 把整个文件读入一个数组中
- fgets() - 从文件指针中读取一行
- fread() - 读取文件（可安全用于二进制文件）
- readfile() - 输出文件
- file_put_contents() - 将一个字符串写入文件
- stream_get_contents() - 读取资源流到一个字符串
- stream_context_create() - 创建资源流上下文
- $http_response_header