如何在 PHP 中逐行读取一个大文件

Minahil Noor 2024年2月15日
  1. 在 PHP 中使用 fgets() 函数逐行读取大文件
  2. 在 PHP 中使用 file() 函数逐行读取一个大文件
  3. 在 PHP 中使用 stream_get_line() 函数逐行读取大文件
如何在 PHP 中逐行读取一个大文件

在本文中,我们将介绍在 PHP 中逐行读取一个大文件的方法。

  • 使用 fgets() 函数
  • 使用 file() 函数
  • 使用 stream_get_line() 函数

在 PHP 中使用 fgets() 函数逐行读取大文件

内置函数 fgets() 从一个打开的文件中读取一行。我们可以用这个函数来逐行读取一个大文件。使用这个函数的正确语法如下。

fgets($fileName, $lengthOfFile);

函数 fgets() 有两个参数。其详细参数如下

参数 说明
$fileName 强制 这是我们要逐行读取的文件
$lengthOfFile 可选 它讲述了要读取的文件的长度,它的默认值是 1024 字节。它的默认值是 1024 字节。

如果成功的话,该函数从用户指定的文件中返回一个 stringlengthOfFile -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() 函数读取文件,直到最后。输出显示的是逐行读取的文件内容。

输出:

fgets 函数在 PHP 中逐行读取一个大文件

在 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);
?> 

输出:

stream_get_line(在 PHP 中逐行读取一个大文件的函数

注意
句号 . 已从输出中删除。

相关文章 - PHP File