51、PHP 原生魅力 - 文件操作 - 将文件读入数组
file():读取文件内容到数组中
如果你想读取一个文件,可以使用 file()
函数。它会将文件内容放入一个数组中,让您能够逐行处理或作为列表处理。假设您有一个文本 (.txt) 文件,其中包含国家列表,并且您需要显示这个列表,可以使用 file()
函数来读取文件并将其转换为数组。
下面是一个示例:
<?php
$countries = file('countries.txt');
print_r($countries);
输出如下:
$ php 51-file.php
Array
(
[0] => PHP
[1] => Laravel
)
file() 函数参数
file 函数有三个参数作为参数传递。
file ( $filename , $flags , $context )
-
$filename
: 文件路径。 -
$flags
: 是一个可选参数,可以是以下常量中的一个或多个,用于控制文件读取的行为。 -
$context
: 允许您为文件句柄指定一个上下文,这主要用于高级操作,如设置超时、HTTP 头部等。
以下是与file()
函数相关的文件常量:
-
FILE_USE_INCLUDE_PATH
: 如果开启此标志,并且文件在当前目录中未找到,PHP 将会搜索 include 路径来查找文件。 -
FILE_IGNORE_NEW_LINES
: 使用此标志会去除文件中每一行末尾的换行符(\n),这样数组中的每个元素就不包含换行符了。 -
FILE_SKIP_EMPTY_LINES
: 当开启此标志时,空行(只含有换行符的行)会被忽略,不会包含在返回的数组中。 -
FILE_TEXT
: 在 Windows 系统下使用,指示文件为文本文件。通常用于区分文本文件和二进制文件的读取方式。 -
FILE_BINARY
: 同样是在 Windows 系统下使用,指示文件为二进制文件。在大多数情况下,默认就是二进制模式,此常量主要为了与fopen()
的模式保持一致。
在实际应用中,根据需要选择合适的常量组合,以控制文件读取的具体行为。
添加选项和上下文
<?php
// 获取当前 PHP 文件的内容
print_r(file(__FILE__));
// 你还可以检索远程文件
print_r(file('https://cdn.wsform.com/wp-content/uploads/2020/06/color_web_safe.csv'));
// 如果你需要设置一些头,你可以使用“上下文”
$opts = [
'http' => [
'method' => "GET",
'header' => "Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
]
];
$context = stream_context_create($opts);
print_r(file(
filename: 'https://cdn.wsform.com/wp-content/uploads/2020/06/color_web_safe.csv',
context: $context
));
file()
函数可以处理多种文件类型,包括但不限于:
- 文本文件 (*.txt):这类文件包含纯文本,无格式的内容。
- CSV文件 (*.csv):逗号分隔值文件,用于存储表格数据。
- HTML文件 (*.html, *.htm):这类文件包含HTML标记,可以被读入数组中。
- XML文件 (*.xml):以XML格式存储结构化数据的文件。
- 日志文件 (*.log):基于文本的文件,用来记录事件或消息。
- 配置文件 (*.config, *.ini等):存储特定格式配置数据的文件。
实际上,文件扩展名并不是file()
函数处理能力的限制因素。一般来说,它可以读取任何基于文本的文件。然而,如果文件包含二进制数据或非文本数据,使用file()
函数读取的结果可能不会如预期,甚至可能导致乱码或错误。对于二进制文件或需要特殊解析的文件类型(如图片、音频、视频等),应考虑使用更适合的函数或方法来处理。
请登录后再评论