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