亚洲乱码卡一卡二卡三永久-亚洲乱码一二三四区-亚洲乱码一区二区三区在线观看-亚洲伦理一区-成人在色线视频在线观看免费大全-成人在线91

Roger McCoy是使用過(guò)包括C、Java、JavaScript、Perl、PHP 和Microsoft Visual Basic 在內(nèi)的多種編程語(yǔ)言的開(kāi)發(fā)人員。他有五年的PHP應(yīng)用程序開(kāi)發(fā)經(jīng)驗(yàn),但是他作為呼叫中心行業(yè)內(nèi)的技師可能更著名。

讓我們算一算有多少種方法

處理諸如 PHP 之類(lèi)的現(xiàn)代編程語(yǔ)言的樂(lè)趣之一就是有大量的選項(xiàng)可用。PHP 可以輕松地贏得 Perl 的座右銘“There's more than one way to do it”(并非只有一種方法可做這件事),尤其是在文件處理上。但是在這么多可用的選項(xiàng)中,哪一種是完成作業(yè)的最佳工具?當(dāng)然,實(shí)際答案取決于解析文件的目標(biāo),因此值得花時(shí)間探究所有選項(xiàng)。

傳統(tǒng)的 fopen 方法

fopen 方法可能是以前的 C 和 C++ 程序員最熟悉的,因?yàn)槿绻褂眠^(guò)這些語(yǔ)言,那么它們或多或少都是您已掌握多年的工具。對(duì)于這些方法中的任何一種,通過(guò)使用 fopen(用于讀取數(shù)據(jù)的函數(shù))的標(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)的程序員都熟悉這些函數(shù),但是讓我對(duì)這些函數(shù)進(jìn)行分解。有效地執(zhí)行以下步驟:

1、打開(kāi)文件。$file_handle 存儲(chǔ)了一個(gè)對(duì)文件本身的引用。 
2、檢查您是否已到達(dá)文件的末尾。 
3、繼續(xù)讀取文件,直至到達(dá)文件末尾,邊讀取邊打印每行。 
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)建一個(gè)與以上頁(yè)面的連接,并允許您開(kāi)始像讀取一個(gè)本地文件一樣讀取它。

注: fopen 中使用的 “r” 將指示文件以只讀方式打開(kāi)。由于將數(shù)據(jù)寫(xiě)入文件不在本文的討論范圍內(nèi),因此我將不列出所有其他選項(xiàng)。但是,如果是從二進(jìn)制文件讀取以獲得跨平臺(tái)兼容性,則應(yīng)當(dāng)將 “r” 更改為 “rb”。稍后您將看到這樣的示例。

feof

feof 命令將檢測(cè)您是否已經(jīng)讀到文件的末尾并返回 True 或 False。清單 1 中的循環(huán)將繼續(xù)執(zhí)行,直至您達(dá)到文件“myfile”的末尾。注:如果讀取的是 URL 并且套接字由于不再有任何數(shù)據(jù)可以讀取而超時(shí),則 feof 也將返回 False。

fclose

向前跳至清單 1 的末尾,fclose 將實(shí)現(xiàn)與 fopen 相反的功能:它將關(guān)閉指向文件或 URL 的連接。執(zhí)行此函數(shù)后,您將不再能夠從文件或套接字中讀取任何信息。

fgets

在清單 1 中回跳幾行,您就到達(dá)了文件處理的核心:實(shí)際讀取文件。fgets 函數(shù)是處理第一個(gè)示例的首選武器。它將從文件中提取一行數(shù)據(jù)并將其作為字符串返回。在那之后,您可以打印或者以別的方式處理數(shù)據(jù)。清單 1 中的示例將精細(xì)地打印整個(gè)文件。

如果決定限制處理數(shù)據(jù)塊的大小,您可以將一個(gè)參數(shù)添加到 fgets 中限制最大行長(zhǎng)度。例如,使用以下代碼將行長(zhǎng)度限制為 80 個(gè)字符:

$string = fgets($file_handle, 81);

回想 C 中的“\0”字符串末尾終止符,將長(zhǎng)度設(shè)為比實(shí)際所需值大一的數(shù)字。因而,如果需要 80 個(gè)字符,則以上示例使用 81。應(yīng)養(yǎng)成以下習(xí)慣:只要對(duì)此函數(shù)使用行限制,就添加該額外字符。

fread

fgets 函數(shù)是多個(gè)文件讀取函數(shù)中惟一一個(gè)可用的。它是一個(gè)更常用的函數(shù),因?yàn)橹鹦薪馕鐾ǔ?huì)有意義。事實(shí)上,幾個(gè)其他函數(shù)也可以提供類(lèi)似功能。但是,您并非總是需要逐行解析。

這時(shí)就需要使用 fread。fread 函數(shù)與 fgets 的處理目標(biāo)略有不同:它趨于從二進(jìn)制文件(即,并非主要包含人類(lèi)可閱讀的文本的文件)中讀取信息。由于“行”的概念與二進(jìn)制文件無(wú)關(guān)(邏輯數(shù)據(jù)結(jié)構(gòu)通常都不是由新行終止),因此您必須指定需要讀入的字節(jié)數(shù)。

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項(xiàng)目群及時(shí)溝通

專(zhuān)業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅(jiān)持

10年專(zhuān)注高端品質(zhì)開(kāi)發(fā)
  • 返回頂部
主站蜘蛛池模板: 日韩精品亚洲专区在线观看 | 黄网站免费视频 | 日本一区二区免费在线 | 国产成人精品一区二区免费 | 最新国产在线视频 | 久久精品欧美一区二区 | 亚洲精品欧美在线 | 国外欧美一区另类中文字幕 | 91欧美在线 | 午夜久久免影院欧洲 | 国产尤物视频在线 | 成人免费观看一区二区 | 色噜噜狠狠狠狠色综合久不 | 亚洲欧美国产精品专区久久 | 老司机成人免费精品视频 | 曰韩黄色片 | 26uuu最新| 最近中文字幕网2019 | 日韩国产欧美成人一区二区影院 | 欧美日韩综合在线视频免费看 | 国产亚洲欧美ai在线看片 | 一级毛片完整免费版 | 国产成人精品日本亚洲18图 | 亚洲a在线视频 | 一个人的www免费视频 | 谁有免费黄色网址 | a国产成人免费视频 | 亚洲精选在线 | 成人精品视频一区二区三区尤物 | 91久久澡人人爽人人添 | 免费看的黄色大片 | 区二区三区四区免费视频 | 狠狠色综合色综合网站嗯 | 国产精品久久久久久久9999 | 亚洲精品tv久久久久久久久久 | 国产大片免费在线观看 | 看污网址 | 欧美一级做一a做片性视频 欧美一级做性受 | 高清中文字幕 | 免费网站成人亚洲 | 日韩激情在线播放 |