線上服務(wù)咨詢
Article/文章
記錄成長點滴 分享您我感悟
您當前位置>首頁 > 知識 > 網(wǎng)站建設(shè)
使用PHP
發(fā)表時間:2019-07-30 15:37:03
文章來源:沈陽軟件開發(fā)
標簽:網(wǎng)站建設(shè) 小程序開發(fā) 小程序制作 微信小程序開發(fā) 公眾號開發(fā) 微信公眾號開發(fā) 網(wǎng)頁設(shè)計 網(wǎng)站優(yōu)化 網(wǎng)站排名 網(wǎng)站設(shè)計 微信小程序設(shè)計 小程序定制 微信小程序定制
瀏覽次數(shù):0
讀取文件的正確方法 Roger McCoy是一名開發(fā)人員,他使用各種編程語言,包括C,Java,JavaScript,Perl,PHP和Microsoft Visual Basic。他在PHP應(yīng)用程序開發(fā)方面有五年的經(jīng)驗,但他可能更熟悉呼叫中心行業(yè)的技術(shù)人員。
讓我們算一算有多少種方法
處理像PHP這樣的現(xiàn)代編程語言的樂趣之一就是有很多選擇。 PHP可以很容易地贏得Perl的座右銘“有多種方法可以做到”(不僅僅是一種方法),特別是在文件處理方面。但是,許多可用選項中的哪一個是完成工作的最佳工具?當然,實際答案取決于解析文件的目標,因此值得花時間探索所有選項。
傳統(tǒng)的 fopen 方法
fopen方法可能是前C和C ++程序員最熟悉的方法,因為如果你使用它們,它們或多或少是你多年來掌握的工具。對于這些方法中的任何一種,使用fopen(讀取數(shù)據(jù)的標準方法)打開文件,然后使用fclose關(guān)閉文件,如清單1所示。
清單1:用fgets打開并讀取文件
$ file_handle=fopen('myfile','r'); while(!feof($ file_handle)){$ line=fgets($ file_handle); echo $ line;} fclose($ file_handle);
雖然大多數(shù)具有多年編程經(jīng)驗的程序員都熟悉這些功能,但讓我分解一下。有效執(zhí)行以下步驟:
1.打開文件。 $ file_handle存儲對文件本身的引用。 2.檢查是否已到達文件末尾。 3.繼續(xù)讀取文件,直到它到達文件末尾,并在讀取時打印每一行。 4.關(guān)閉文件。
考慮到這些步驟,我將回顧這里使用的每個文件函數(shù)。
fopen
fopen函數(shù)將創(chuàng)建與文件的連接。我說“創(chuàng)建連接”的原因是因為除了打開文件外,fopen還可以打開一個URL:
$ fh=fopen('http://127.0.0.1/','r');
這行代碼將創(chuàng)建與上一頁的連接,并允許您開始讀取它,就像它是本地文件一樣。
注意:fopen中使用的“r”表示文件以只讀方式打開。由于將數(shù)據(jù)寫入文件超出了本文的范圍,因此我不會列出所有其他選項。但是,如果要從二進制文件中讀取跨平臺兼容性,則應(yīng)將“r”更改為“rb”。稍后您將看到一個示例。
feof
feof命令將檢測您是否已讀取文件末尾并返回True或False。清單1中的循環(huán)將繼續(xù),直到到達文件“myfile”的末尾。注意:如果您讀取URL并且套接字超時,因為無法讀取更多數(shù)據(jù),則feof也將返回False。
fclose
跳到清單1的末尾,fclose將實現(xiàn)與fopen相反的操作:它將關(guān)閉與文件或URL的連接。執(zhí)行此功能后,您將無法再從文件或套接字讀取任何信息。
fgets
回到清單1中的幾行,您將到達文件處理的核心:實際讀取文件。 fgets函數(shù)是處理第一個例子的首選武器。它從文件中獲取一行數(shù)據(jù)并將其作為字符串返回。之后,您可以打印或以其他方式處理數(shù)據(jù)。清單1中的示例將詳細打印整個文件。
如果決定限制處理塊的大小,可以向fgets添加參數(shù)以限制最大行長度。例如,使用以下代碼將行長度限制為80個字符:
$ string=fgets($ file_handle,81);
回想一下C中“\ 0”字符串的結(jié)尾,并將長度設(shè)置為大于實際值的數(shù)字1。因此,如果需要80個字符,則上面的示例使用81.您應(yīng)該養(yǎng)成以下習(xí)慣:只要對此函數(shù)使用行限制,請?zhí)砑哟祟~外字符。
fread
fgets函數(shù)是唯一可用于多個文件讀取函數(shù)的函數(shù)。這是一個更常見的功能,因為逐行解析通常是有意義的。實際上,其他幾個功能可以提供類似的功能。但是,您并不總是需要逐行解析。
然后你需要使用fread。 fread函數(shù)與fgets的處理目標略有不同:它傾向于從二進制文件(即主要不是人類可讀文本的文件)中讀取信息。由于“行”的概念獨立于二進制文件(邏輯數(shù)據(jù)結(jié)構(gòu)通常不以新行終止),因此必須指定需要讀取的字節(jié)數(shù)。
網(wǎng)站建設(shè),小程序開發(fā),小程序制作,微信小程序開發(fā),公眾號開發(fā),微信公眾號開發(fā),網(wǎng)頁設(shè)計,網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設(shè)計,微信小程序設(shè)計,小程序定制,微信小程序定制