• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>
    Roger McCoy是使用過包括C、Java、JavaScript、Perl、PHP 和Microsoft Visual Basic 在內的多種編程語言的開發人員。他有五年的PHP應用程序開發經驗,但是他作為呼叫中心行業內的技師可能更著名。

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

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

    傳統的 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("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 中的“\0”字符串末尾終止符,將長度設為比實際所需值大一的數字。因而,如果需要 80 個字符,則以上示例使用 81。應養成以下習慣:只要對此函數使用行限制,就添加該額外字符。

    fread

    fgets 函數是多個文件讀取函數中惟一一個可用的。它是一個更常用的函數,因為逐行解析通常會有意義。事實上,幾個其他函數也可以提供類似功能。但是,您并非總是需要逐行解析。

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

    穩定

    產品高可用性高并發

    貼心

    項目群及時溝通

    專業

    產品經理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質開發
    • 返回頂部
    久久夜色精品国产亚洲AV动态图| 久久亚洲精品无码观看不卡| 精品久久久久久无码中文字幕一区| 热re99久久精品国99热| 99精品无人区乱码1区2区3区| 国产成人精品a视频一区| 亚洲日韩AV一区二区三区四区| 国产精品白嫩在线观看| 人妻少妇精品无码专区漫画| 国产成人精品免费视频大全麻豆| 99精品国产在热久久无码| 久久精品国产这里是免费| 中国精品18videosex性中国 | 国产无套精品一区二区| 国产精品男男视频一区二区三区| 国产日韩精品一区二区三区| 日韩精品一区二区三区中文精品| 四虎影视精品永久免费| 国产成人高清精品免费软件| 在线精品自拍亚洲第一区| 精品日韩一区二区| 精品国产一区二区三区久久狼 | 日韩精品福利片午夜免费观着| 亚洲精品国产日韩| 国产精品久久波多野结衣| 亚洲伊人精品综合在合线| 亚洲精品国产免费| 亚洲精品人成电影网| 亚洲国产成人精品无码一区二区 | 日韩一级视频在线观看播放| 日韩精品无码Av一区二区| 色婷婷色综合激情国产日韩| 四虎一影院区永久精品| 三上悠亚日韩精品一区在线| 日韩专区无码人妻| 亚洲日韩国产精品乱-久| 日韩国产成人资源精品视频| 无码精品人妻一区| 国产精品.XX视频.XXTV| 久久97久久97精品免视看秋霞| 久久97久久97精品免视看秋霞|