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