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,我们在处理结果之前对其进行检查。
最佳实践
- 错误检查: 始终检查函数是否返回 false。
- 内存使用: 对于大型文件,请考虑使用 fgets() 代替。
- 安全性: 使用用户输入时,验证文件路径。
- 标志: 为您的用例使用适当的标志。
- 权限: 确保适当的文件权限。
来源
本教程通过实际示例介绍了 PHP 的 file 函数,展示了它在不同场景中的用法。
作者
列出 所有 PHP 文件系统函数。