ZetCode

PHP 文件函数

最后修改于 2025 年 4 月 3 日

PHP 的 file 函数将整个文件读入一个数组。 数组中的每个元素对应于文件中的一行。 这对于逐行处理文本文件很有用。

基本定义

file 函数读取一个文件,并将其内容作为行数组返回。 它接受三个参数:文件名、标志和上下文。

语法:file(string $filename, int $flags = 0, resource $context = null): array|false。 该函数在失败时返回 false。

基本文件示例

这展示了使用 file 将文件读入数组的最简单用法。

basic_file.php
<?php

declare(strict_types=1);

$lines = file('data.txt');

foreach ($lines as $line) {
    echo $line;
}

这将 'data.txt' 读入一个数组,其中每个元素都是文件中的一行。 换行符包含在每行的末尾。

读取时去除换行符

使用 FILE_IGNORE_NEW_LINES 标志从每行中删除换行符。

no_newlines.php
<?php

declare(strict_types=1);

$lines = file('data.txt', FILE_IGNORE_NEW_LINES);

foreach ($lines as $line) {
    echo "Line: $line\n";
}

FILE_IGNORE_NEW_LINES 标志使每个数组元素包含行内容,而没有终止换行符。 这通常更方便。

跳过空行

FILE_SKIP_EMPTY_LINES 标志跳过输入文件中的空行。

skip_empty.php
<?php

declare(strict_types=1);

$lines = file('data.txt', FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);

foreach ($lines as $line) {
    echo "Line: $line\n";
}

此示例结合了两个标志以跳过空行并删除换行符。 位或运算符 (|) 用于组合多个标志。

读取远程文件

当启用 allow_url_fopen 时,file 函数也可以从 URL 读取。

remote_file.php
<?php

declare(strict_types=1);

$lines = file('https://example.com/data.txt', FILE_IGNORE_NEW_LINES);

if ($lines !== false) {
    foreach ($lines as $line) {
        echo "Line: $line\n";
    }
} else {
    echo "Failed to read file";
}

这从远程服务器读取文件。 在读取远程文件时,务必检查返回值是否为 false,因为操作可能会失败。

错误处理

在处理文件时,适当的错误处理非常重要。

error_handling.php
<?php

declare(strict_types=1);

$filename = 'nonexistent.txt';
$lines = file($filename);

if ($lines === false) {
    echo "Error: Could not read file '$filename'";
    exit(1);
}

foreach ($lines as $line) {
    echo $line;
}

此示例演示了适当的错误处理。 该函数在失败时返回 false,我们在处理结果之前对其进行检查。

最佳实践

来源

PHP 文件文档

本教程通过实际示例介绍了 PHP 的 file 函数,展示了它在不同场景中的用法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 PHP 文件系统函数