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 文件系统函数。