file_get_contents 将整个文件读入一个字符串
发表日期:2021-07-01 08:55:42 | 来源: | | 浏览(1075) 分类:文件系统函数
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
= ?,
int $offset
= 0,
int $length
= ?
): string|false
和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset
所指定的位置开始读取长度为 length
的内容。如果失败,file_get_contents()
将返回 false
。
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
注意:
如果要打开有特殊字符的 URL (比如说有空格),就需要使用urlencode() 进行 URL 编码。
参数
filename
要读取的文件的名称。
use_include_path
注意:
常量
FILE_USE_INCLUDE_PATH
用于触发搜索 include path。 因为FILE_USE_INCLUDE_PATH
是个 int,如果开启了严格类型 将无法启用。 所以要用true
来代替常量。context
stream_context_create() 创建的有效的上下文(context)资源。 如果你不需要自定义 context,可以用
null
来忽略。offset
读取原始数据流的开始位置偏移量。负的 offset 会从数据流的末尾开始统计。
远程文件不支持偏移量寻址(
offset
)。 对远程文件以较小的 offset 可能可以正常寻址, 但由于是对缓冲流进行操作,所以操作结果不可预测。length
要读取数据的最大长度。 默认情况下会读到文件末尾。 注意,该参数会应用到处理 stream 的过滤器(filter)中。
返回值
函数返回读取到的数据, 或者在失败时返回 false
。
警告
此函数可能返回布尔值false
,但也可能返回等同于 false
的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用
===
运算符来测试此函数的返回值。
错误/异常
以下情况会导致 E_WARNING
级别错误:
无法找到 filename
文件; length
小于零;
在 steam 中无法寻址偏移量 offset
。
Windows 下用 file_get_contents() 读取目录会导致 E_WARNING
错误。
PHP 7.4 起,其他操作系统也会出现同样错误。
范例
示例 #1 获取并输出网站首页 HTML 源码
<?php $homepage = file_get_contents('http://www.example.com/'); echo $homepage; ?>
示例 #2 在 include_path 里搜索
<?php // 如果开启了严格类型,例如 declare(strict_types=1); $file = file_get_contents('./people.txt', true); // 否则就这样写$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH); ?>
示例 #3 读取文件一小节
<?php // 从第 21 个字符开始,读取 14 字符长度$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14); var_dump($section); ?>
以上例程的输出类似于:
string(14) "lle Bjori Ro"
示例 #4 使用 stream 上下文(context)
<?php // 创建 stream $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); ?>
更新日志
版本 | 说明 |
---|---|
7.1.0 | 支持负数 offset 。 |
注释
注意: 此函数可安全用于二进制对象。
小技巧
如已启用fopen 包装器,在此函数中, URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议,注意其用法及其可提供的预定义变量。
警告
使用 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
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- basename 返回路径中的文件名部分(0)
- chgrp 改变文件所属的组(0)
- chmod 改变文件模式(0)
- chown 改变文件的所有者(0)
- clearstatcache 清除文件状态缓存(0)
- copy 拷贝文件(0)
- delete 参见 unlink() 或 unset()(0)
- dirname 返回路径中的目录部分(0)
- disk_free_space 返回目录中的可用空间(0)
- disk_total_space 返回一个目录的磁盘总大小(0)
- diskfreespace disk_free_space() 的别名(0)
- fclose 关闭一个已打开的文件指针(0)
- feof 测试文件指针是否到了文件结束的位置(0)
- fflush 将缓冲内容输出到文件(0)
- fgetc 从文件指针中读取字符(0)
- fgetcsv 从文件指针中读入一行并解析 CSV 字段(0)
- fgets 从文件指针中读取一行(0)
- fgetss 从文件指针中读取一行并过滤掉 HTML 标记(0)
- file_exists 检查文件或目录是否存在(0)
- file_get_contents 将整个文件读入一个字符串(0)
- file_put_contents 将一个字符串写入文件(0)
- file 把整个文件读入一个数组中(0)
- fileatime 取得文件的上次访问时间(0)
- filectime 取得文件的 inode 修改时间(0)
- filegroup 取得文件的组(0)
- fileinode 取得文件的 inode(0)
- filemtime 取得文件修改时间(0)
- fileowner 取得文件的所有者(0)
- fileperms 取得文件的权限(0)
- filesize 取得文件大小(0)
- filetype 取得文件类型(0)
- flock 轻便的咨询文件锁定(0)
- fnmatch 用模式匹配文件名(0)
- fopen 打开文件或者 URL(0)
- fpassthru 输出文件指针处的所有剩余数据(0)
- fputcsv 将行格式化为 CSV 并写入文件指针(0)
- fputs fwrite() 的别名(0)
- fread 读取文件(可安全用于二进制文件)(0)
- fscanf 从文件中格式化输入(0)
- fseek 在文件指针中定位(0)
- fstat 通过已打开的文件指针取得文件信息(0)
- ftell 返回文件指针读/写的位置(0)
- ftruncate 将文件截断到给定的长度(0)
- fwrite 写入文件(可安全用于二进制文件)(0)
- glob 寻找与模式匹配的文件路径(0)
- is_dir 判断给定文件名是否是一个目录(0)
- is_executable 判断给定文件名是否可执行(0)
- is_file 判断给定文件名是否为一个正常的文件(0)
- is_link 判断给定文件名是否为一个符号连接(0)
- is_readable 判断给定文件名是否可读(0)
- is_uploaded_file 判断文件是否是通过 HTTP POST 上传的(0)
- is_writable 判断给定的文件名是否可写(0)
- is_writeable is_writable() 的别名(0)
- lchgrp 修改符号链接的所有组(0)
- lchown 修改符号链接的所有者(0)
- link 建立一个硬连接(0)
- linkinfo 获取一个连接的信息(0)
- lstat 给出一个文件或符号连接的信息(0)
- mkdir 新建目录(0)
- move_uploaded_file 将上传的文件移动到新位置(0)
- parse_ini_file 解析一个配置文件(0)
- parse_ini_string 解析配置字符串(0)
- pathinfo 返回文件路径的信息(0)
- pclose 关闭进程文件指针(0)
- popen 打开进程文件指针(0)
- readfile 输出文件(0)
- readlink 返回符号连接指向的目标(0)
- realpath_cache_get 获取真实目录缓存的详情(0)
- realpath_cache_size 获取真实路径缓冲区的大小(0)
- realpath 返回规范化的绝对路径名(0)
- rename 重命名一个文件或目录(0)
- rewind 倒回文件指针的位置(0)
- rmdir 删除目录(0)
- set_file_buffer stream_set_write_buffer() 的别名(0)
- stat 给出文件的信息(0)
- symlink 建立符号连接(0)
- tempnam 建立一个具有唯一文件名的文件(0)
- tmpfile 建立一个临时文件(0)
- touch 设定文件的访问和修改时间(0)
- umask 改变当前的 umask(0)
- unlink 删除文件(0)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)