一起學慣用PHP讀取檔案的正確方法
來源:互聯網
上載者:User
今天做讀取檔案練習的時候遇到一個問題,遂在百度上尋找相關解決方案.發現此篇文章,自我感覺良好,特轉載過來,供大家參考,相信大家會有不一樣的收穫..
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("http://127.0.0.1/", "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 中的“”字串末尾終止符,將長度設為比實際所需值大一的數字。因而,如果需要 80 個字元,則以上樣本使用 81。應養成以下習慣:只要對此函數使用行限制,就添加該額外字元。
fread
fgets 函數是多個檔案讀取函數中惟一一個可用的。它是一個更常用的函數,因為逐行解析通常會有意義。事實上,幾個其他函數也可以提供類似功能。但是,您並非總是需要逐行解析。
這時就需要使用 fread。