在 PHP 中讀取文字檔案

Subodh Poudel 2023年1月30日 2021年10月2日
  1. 在 PHP 中使用 fgets() 函式逐行讀取文字檔案
  2. 在 PHP 中使用 file() 函式逐行讀取文字檔案
  3. 在 PHP 中使用 file_get_contents()explode() 函式逐行讀取檔案
在 PHP 中讀取文字檔案

本文將介紹 PHP 中逐行讀取文字檔案的方法。

在 PHP 中使用 fgets() 函式逐行讀取文字檔案

我們可以使用帶有 while 迴圈的 fgets() 函式在 PHP 中逐行讀取文字檔案。如果有一行,該函式返回一行,如果沒有更多的行要讀取,則返回 false。它需要兩個引數。語法如下。

fgets($file, $length)

在這裡,$file 類似於指向成功開啟檔案的檔案指標。$length 選項,可選,表示要讀取的位元組數。

我們可以使用 open() 函式讀取檔案,然後使用 while 迴圈通過 fgets() 函式迴圈遍歷每一行。我們有一個包含以下內容的文字檔案 abc.txt

Hi
How are you
Have a great day 

例如,建立一個變數 $txt_file 並在其中寫入 fopen() 函式。在 r 模式下開啟檔案 abc.txt。建立一個行計數器變數 $a 並將值 1 分配給它。然後,建立一個 while 迴圈。在迴圈的括號內,編寫以 $text_file 作為引數的 fgets() 函式。將函式分配給迴圈中的 $line 變數。列印 $line 變數,將它與迴圈體內的 $a 變數連線起來。增加 $a 變數並在迴圈外使用 fclose() 函式關閉檔案流。

示例程式碼:

<?php
$txt_file = fopen('abc.txt','r');
$a = 1;
while ($line = fgets($txt_file)) {
 echo($a." ".$line)."<br>";
 $a++;
}
fclose($txt_file);
?>

輸出:

1 Hi 
2 How are you 
3 Have a great day

在 PHP 中使用 file() 函式逐行讀取文字檔案

file() 函式將整個檔案讀入一個陣列。file() 函式的語法如下。

file($filename, $flag, $context)

這裡,$filename 是要讀取的檔案路徑。$flag 選項是可選的,它由各種常量組成,例如 FILE_USE_INCLUDE_PATHFILE_IGNORE_NEW_LINESFILE_SKIP_EMPTY_LINES。第三個也是可選的,它定義了一個上下文資源。

file() 函式返回整個陣列,如果它存在或返回 false。我們可以使用該函式通過 foreach() 函式的 helo 逐行讀取檔案上下文。foreach() 函式將遍歷整個內容並單獨提取每一行。

例如,將檔案路徑儲存在變數 $txt_file 中。編寫一個變數 $lines 並使用 $txt_file 作為引數將 file() 函式儲存在其上。接下來,使用 foreach() 函式迴圈遍歷檔案的內容。使用 $lines 作為迭代器,使用 $num=>$line 作為值。在迴圈體內,列印 $num$line 變數。

示例程式碼:

$txt_file = 'abc.txt';

$lines = file($txt_file);
foreach ($lines as $num=>$line)
{
 echo 'Line '.$num.': '.$line.'<br/>';
}

輸出:

Line 0: Hi 
Line 1: How are you 
Line 2: Have a great day

在 PHP 中使用 file_get_contents()explode() 函式逐行讀取檔案

file_get_contents() 函式將整個檔案讀入一個字串。如果內容存在,則將整個檔案作為字串返回,否則返回 false。我們可以指定檔案路徑作為函式的引數。explode() 函式使用分隔符將字串拆分為陣列。explode() 函式的語法如下。

explode(separator, $string, $limit)

separator 選項用於在返回值時將 $string$limit 元素的數量分開。我們可以結合 file_get_contents()explode()foreach() 函式在 PHP 中逐行讀取文字檔案。

例如,建立一個變數 $contents 並在其上使用引數中的檔案路徑編寫 file_get_contents() 函式。使用 explode() 函式,其中 \n 字元作為分隔符,$contents 作為字串。將函式分配給變數 $lines。使用 foreach 迴圈將 $lines 迴圈為 $line。然後,在迴圈體內列印 $line

在下面的示例中,$contents 變數返回字串。我們用\n 換行符將其拆分為一個陣列,並使用迴圈列印每一行。

示例程式碼:

$contents=file_get_contents("abc.txt");
$lines=explode("\n",$contents);
foreach($lines as $line){
 echo $line.'<br>';

}

輸出:

Hi 
How are you 
Have a great day
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn