php語言

當前位置 /首頁/計算機/php語言/列表

用PHP讀取檔案的正確方法

處理諸如 PHP 之類的現代程式語言的樂趣之一就是有大量的選項可用。PHP 可以輕鬆地贏得 Perl 的座右銘“There‘s more than one way to do it”(並非只有一種方法可做這件事),尤其是在檔案處理上。但是在這麼多可用的選項中,哪一種是完成作業的最佳工具?當然,實際答案取決於解析檔案的目標,因此值得花時間探究所有選項。以下是小編為大家搜尋整理的用PHP讀取檔案的正確方法,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

用PHP讀取檔案的正確方法

  傳統的 fopen 方法

fopen 方法可能是以前的 C 和 C++ 程式設計師最熟悉的,因為如果您使用過這些語言,那麼它們或多或少都是您已掌握多年的工具。對於這些方法中的任何一種,通過使用 fopen(用於讀取資料的函式)的標準方法開啟檔案,然後使用 fclose 關閉檔案,如清單 1 所示。

清單1:用fgets開啟並讀取檔案

$file_handle = fopen("myfile", "r");

while (!feof($file_handle)) {

$line = fgets($file_handle);

echo $line;

}

fclose($file_handle);

雖然大多數具有多年程式設計經驗的程式設計師都熟悉這些函式,但是讓我對這些函式進行分解。有效地執行以下步驟:

1、開啟檔案。$file_handle 儲存了一個對檔案本身的引用。

2、檢查您是否已到達檔案的末尾。

3、繼續讀取檔案,直至到達檔案末尾,邊讀取邊列印每行。

4、關閉檔案。

記住這些步驟,我將回顧在這裡使用的每個檔案函式。

fopen

fopen 函式將建立與檔案的連線。我之所以說“建立連線”,是因為除了開啟檔案之外,fopen 還可以開啟一個 URL:

$fh = fopen("", "r");

這行程式碼將建立一個與以上頁面的連線,並允許您開始像讀取一個本地檔案一樣讀取它。

注: fopen 中使用的 “r” 將指示檔案以只讀方式開啟。由於將資料寫入檔案不在本文的討論範圍內,因此我將不列出所有其他選項。但是,如果是從二進位制檔案讀取以獲得跨平臺相容性,則應當將 “r” 更改為 “rb”。稍後您將看到這樣的示例。

feof

feof 命令將檢測您是否已經讀到檔案的末尾並返回 True 或 False。清單 1 中的迴圈將繼續執行,直至您達到檔案“myfile”的末尾。注:如果讀取的是 URL 並且套接字由於不再有任何資料可以讀取而超時,則 feof 也將返回 False。

fclose

向前跳至清單 1 的末尾,fclose 將實現與 fopen 相反的功能:它將關閉指向檔案或 URL 的連線。執行此函式後,您將不再能夠從檔案或套接字中讀取任何資訊。

fgets

在清單 1 中回跳幾行,您就到達了檔案處理的`核心:實際讀取檔案。fgets 函式是處理第一個示例的首選武器。它將從檔案中提取一行資料並將其作為字串返回。在那之後,您可以列印或者以別的方式處理資料。清單 1 中的示例將精細地列印整個檔案。

如果決定限制處理資料塊的大小,您可以將一個引數新增到 fgets 中限制最大行長度。例如,使用以下程式碼將行長度限制為 80 個字元:

$string = fgets($file_handle, 81);

回想 C 中的““0”字串末尾終止符,將長度設為比實際所需值大一的數字。因而,如果需要 80 個字元,則以上示例使用 81。應養成以下習慣:只要對此函式使用行限制,就新增該額外字元。

fread

fgets 函式是多個檔案讀取函式中惟一一個可用的。它是一個更常用的函式,因為逐行解析通常會有意義。事實上,幾個其他函式也可以提供類似功能。但是,您並非總是需要逐行解析。

這時就需要使用 fread。fread 函式與 fgets 的處理目標略有不同:它趨於從二進位制檔案(即,並非主要包含人類可閱讀的文字的檔案)中讀取資訊。由於“行”的概念與二進位制檔案無關(邏輯資料結構通常都不是由新行終止),因此您必須指定需要讀入的位元組數。

$fh = fopen("myfile", "rb");

$data = fread($file_handle, 4096);

以上程式碼將讀取 4,096 位元組 (4 KB) 的資料。注:不管指定多少位元組,fread 都不會讀取超過 8,192 個位元組 (8 KB)。

用PHP讀取檔案的正確方法(1)

TAG標籤:檔案 PHP 讀取 #