• <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年專注高端品質開發
    • 返回頂部
    国产精品久久久久毛片真精品| 91麻豆精品国产| 精品国产一区二区三区久久久狼| 国产精品无码v在线观看| 日韩精品亚洲专区在线影视| 日韩人妻精品一区二区三区视频| 亚洲av午夜成人片精品电影| 国产精品国产亚洲区艳妇糸列短篇| 久久午夜无码鲁丝片直播午夜精品| 一区二区三区免费精品视频| 精品国产AV色欲果冻传媒| 久久无码专区国产精品发布| 正在播放国产精品每日更新| 亚洲国产日韩精品| 婷婷射精av这里只有精品| 无码人妻精品一区二区三区夜夜嗨| 香港aa三级久久三级老师2021国产三级精品三级在 | 国产精品女同一区二区久久| 成人精品视频一区二区| 日韩精品无码久久久久久| 9久热精品免费观看视频| 日韩精品国产自在久久现线拍| 久久99热这里只有精品66| 久久久亚洲精品视频| 精品久久人人爽天天玩人人妻| 日韩AV无码中文无码不卡电影| 久久亚洲精品高潮综合色a片| 久久99精品久久久久婷婷| 国产偷久久久精品专区| 精品一区二区三区影院在线午夜 | 国产成人精品免费视| 亚洲av永久无码精品国产精品| 国产精品超碰12396| 亚洲日韩图片专区第1页| 精品免费国产一区二区| 久久久午夜精品福利内容| 久久精品亚洲精品国产色婷| 久久精品无码一区二区三区| 久久se精品一区精品二区国产| 日韩视频中文字幕| 国产亚洲Av综合人人澡精品|