如何在 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