如何在 PHP 中逐行读取一个大文件
Minahil Noor
2023年1月30日
2020年9月26日
在本文中,我们将介绍在 PHP 中逐行读取一个大文件的方法。
- 使用
fgets()
函数 - 使用
file()
函数 - 使用
stream_get_line()
函数
在 PHP 中使用 fgets()
函数逐行读取大文件
内置函数 fgets()
从一个打开的文件中读取一行。我们可以用这个函数来逐行读取一个大文件。使用这个函数的正确语法如下。
fgets($fileName, $lengthOfFile);
函数 fgets()
有两个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$fileName |
强制 | 这是我们要逐行读取的文件 |
$lengthOfFile |
可选 | 它讲述了要读取的文件的长度,它的默认值是 1024 字节。它的默认值是 1024 字节。 |
如果成功的话,该函数从用户指定的文件中返回一个 string
的 lengthOfFile -1
。失败时返回 False
。
下面的程序显示了我们如何使用 fgets()
函数逐行读取一个大文件。我们将分别使用 fopen()
和 fclose()
函数来打开和关闭一个文件。我们有一个名为 flowers.txt
的文本文件,其中包含了花的详细信息。
<?php
if ($file = fopen("flowers.txt", "r")) {
while(!feof($file)) {
$line = fgets($file);
echo ("$line");
}
fclose($file);
}
?>
我们使用 feof()
函数读取文件,直到最后。输出显示的是逐行读取的文件内容。
输出:
在 PHP 中使用 file()
函数逐行读取一个大文件
在 PHP 中,我们还可以使用 file()
函数逐行读取文件。file()
函数将一个文件逐行读取到一个数组中。使用该函数的正确语法如下。
file($fileName, $flags, $context)
函数 file()
接受三个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$fileName |
强制 | 它是我们的文件存放的路径 |
$flags |
可选 | 它讲述了我们可以使用的常量作为这个函数的标志。你可以阅读它这里。 |
$context |
可选 | 就是使用 stream_context_create()函数创建的资源 |
使用 file()
函数读取文件的程序如下。
<?php
foreach(file('flowers.txt') as $line) {
echo $line. "\n";
}
?>
在 PHP 中使用 stream_get_line()
函数逐行读取大文件
我们也可以使用 stream_get_line()
函数逐行读取文件。这个函数可以读取一个文件,直到一个定界符。正确使用该函数的语法如下。
stream_get_line($handle, $length, $ending)
函数 stream_get_line()
接受三个参数。它的详细参数如下
参数 | 说明 | |
---|---|---|
$handle |
强制 | 它是存储我们文件的路径 |
$length |
强制 | 它告诉我们要读取的文件的长度 |
$ending |
强制 | 它是一个告诉定界符的字符串 |
使用 stream_get_line()
函数读取文件的程序如下。
<?php
$file = fopen("flowers.txt", "r+");
while ($line = stream_get_line($file, 1024 * 1024, ".")) {
echo $line;
}
fclose($file);
?>
输出:
注意
句号
.
已从输出中删除。