在 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