如何在 PHP 中逐行讀取一個大檔案

Minahil Noor 2023年1月30日 2020年9月26日
  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