PHP
文件系统 | File System

file_get_contents

file_get_contents

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

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

描述

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

这个功能类似于文件(),不同之处在于file_get_contents()函数返回文件中的一个字符串,开始在指定的offset高达maxlen字节。失败时,file_get_contents()将返回FALSE

file_get_contents()是将文件内容读入字符串的首选方法。如果您的操作系统支持,它将使用内存映射技术来提高性能。

注意:如果要打开一个带有特殊字符(如空格)的URI,则需要使用urlencode()对URI进行编码。

参数

filename

要读取的文件的名称。

use_include_path

注意:从PHP 5开始,FILE_USE_INCLUDE_PATH常量可以用来触发包含路径搜索。这是不可能的,如果严格打字被启用,因为FILE_USE_INCLUDE_PATH是一个int。TRUE改为使用。

context

使用stream_context_create()创建的有效上下文资源。如果您不需要使用自定义上下文,则可以跳过此参数NULL

offset

原始数据流读取开始的偏移量。来自流末尾的负偏移量。

Seeking(offset)不支持远程文件。尝试查找非本地文件可能会使用较小的偏移量,但这是不可预测的,因为它可用于缓冲流。

maxlen

数据读取的最大长度。默认是读取直到文件结束。请注意,此参数应用于过滤器处理的流。

返回值

该函数返回读取数据或FALSE失败。

警告

该函数可能返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE。有关更多信息,请阅读布尔部分。使用===运算符来测试此函数的返回值。

错误/异常

E_WARNING如果filename无法找到,maxlength小于零,或者如果查找offset流中指定的内容失败,则会生成一个级别错误。

例子

示例#1获取并输出网站主页的来源

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

Example#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 ?>

Example#3读取文件的一部分

<?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使用流上下文

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

更新日志

描述
7.1.0增加了对负偏移的支持。
5.1.0增加了offset和maxlen参数。

注意

注意:此函数是二进制安全的。

提示

如果fopen包装已经启用,那么可以使用URL作为文件名。有关如何指定文件名的更多详细信息,请参阅fopen()。请参阅支持的协议和包装以获取有关各种包装具有哪些功能的信息的链接,关于它们的用法的注释以及它们可能提供的任何预定义变量的信息。

警告

使用SSL时,Microsoft IIS将通过关闭连接而不发送close_notify指示符来违反协议。当您到达数据结尾时,PHP将报告为“SSL:致命协议错误”。要解决此问题,应将error_reporting的值降低到不包含警告的级别。当您使用https://封装器打开流时,PHP可以检测到有问题的IIS服务器软件,并会取消警告。当使用fsockopen()创建一个ssl://套接字时,开发人员负责检测并抑制此警告。