PHP的file()函数用于将文件内容按行读取到数组中,其参数和用法如下:
1. 基本语法
array file(string $filename, int $flags = 0, resource $context = null)
2. 参数详解
(1) $filename(必需)
作用:指定要读取的文件路径(本地或远程)。
示例:
$lines = file('data.txt'); // 读取本地文件
$remote = file('https://example.com/log.txt'); // 读取远程文件(2) $flags(可选)
控制读取行为的标志位,可用常量组合(通过|连接)。
FILE_USE_INCLUDE_PATH
在include_path中搜索文件3。
$lines = file('config.ini', FILE_USE_INCLUDE_PATH);
FILE_IGNORE_NEW_LINES
去除每行末尾的换行符。
$lines = file('data.txt', FILE_IGNORE_NEW_LINES); // 数组元素不含\n
FILE_SKIP_EMPTY_LINES
跳过空行35。
$lines = file('log.txt', FILE_SKIP_EMPTY_LINES); // 忽略空行(3) $context(可选)
作用:通过流上下文(如HTTP头、超时设置)控制文件读取。
示例(设置HTTP请求头):
$opts = ['http' => ['header' => 'User-Agent: MyBot']];
$context = stream_context_create($opts);
$lines = file('https://api.example.com/data', 0, $context);3. 返回值与错误处理
成功时:返回包含文件行的数组,每行保留换行符(除非使用
FILE_IGNORE_NEW_LINES)。失败时:返回
false,需检查文件是否存在或权限是否足够。
$lines = file('nonexistent.txt');
if ($lines === false) {
echo "文件读取失败";
}4. 完整示例
// 读取本地文件,跳过空行并去除换行符
$lines = file('notes.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
echo "内容: $line\n";
}
// 通过上下文读取远程文件
$options = ['http' => ['timeout' => 5]]; // 5秒超时
$context = stream_context_create($options);
$webContent = file('http://example.com', 0, $context);5. 注意事项
大文件慎用:可能因内存不足导致崩溃,建议改用
fopen()和fgets()逐行处理。二进制文件:从PHP 4.3.0开始支持二进制文件读取。
行结束符:若需处理Mac格式换行符,可启用
auto_detect_line_endings配置。
通过灵活组合参数,可适应不同文件处理需求。