在 PHP 中讀取文字檔案
- 
          
            在 PHP 中使用 fgets()函式逐行讀取文字檔案
- 
          
            在 PHP 中使用 file()函式逐行讀取文字檔案
- 
          
            在 PHP 中使用 file_get_contents()和explode()函式逐行讀取檔案
 
本文將介紹 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_PATH、FILE_IGNORE_NEW_LINES 和 FILE_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 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