一起學慣用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。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.