如何在 PHP 中逐行讀取一個大檔案
    
    
            Minahil Noor
    2024年2月15日
    
    PHP
    PHP File
    
 
在本文中,我們將介紹在 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);
?> 
輸出:

注意
    句號 
    . 已從輸出中刪除。
        Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe