PHP讀取文件的正確方法
處理諸如PHP之類的現代編程語言的樂趣之一就是有大量的選項可用。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)
-
零基礎學習PHP應該怎麼學
在網上可以看到很多學習php語言的方法,鮮有適合零基礎自學的,當然你要有其他主流語言的從業經驗就另説了,比如你從事java開發3年,python3年之類的,並且英語已經過了6級,閲讀英文書籍和文檔沒什麼壓力,可以按照那些方式學一下。但是隻是感興趣想要學習php語言,不如看看...
-
PHP如何遞歸實現json類
PHP如何遞歸實現json類呢?下面是小編給大家提供的實現方法,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。代碼如下:<?php/**@anthor:QD*@time:2013-09-27*/classjson{private$Arr=array();//傳入數組//構造器publicfunctionjson($array){if(!is_array($arr...
-
提高PHP執行效率的50個技巧
PHP是一種HTML內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,下面是小編為大家整理的提高PHP執行效率的50個技巧,歡迎參考~1、用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,注意:只有echo...
-
php新手易犯的幾個小錯誤
本文為大家列舉了php新手易犯的幾個小錯誤,供大家參考。1、headeralreadysent這個錯誤通常會在你使用HEADER的時候出現,他可能是幾種原因。跟隨小編去看看吧!1、headeralreadysent這個錯誤通常會在你使用HEADER的時候出現,他可能是幾種原因:1,你在使用HEADER前PRING...