亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

用PHP讀取文件的正確方法

時(shí)間:2024-08-17 05:40:00 php語言 我要投稿
  • 相關(guān)推薦

用PHP讀取文件的正確方法

  處理諸如 PHP 之類的現(xiàn)代編程語言的樂趣之一就是有大量的選項(xiàng)可用。PHP 可以輕松地贏得 Perl 的座右銘“There‘s more than one way to do it”(并非只有一種方法可做這件事),尤其是在文件處理上。但是在這么多可用的選項(xiàng)中,哪一種是完成作業(yè)的最佳工具?當(dāng)然,實(shí)際答案取決于解析文件的目標(biāo),因此值得花時(shí)間探究所有選項(xiàng)。以下是小編為大家搜索整理的用PHP讀取文件的正確方法,希望能給大家?guī)韼椭?更多精彩內(nèi)容請及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  傳統(tǒng)的 fopen 方法

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

  1、打開文件。$file_handle 存儲(chǔ)了一個(gè)對文件本身的引用。

  2、檢查您是否已到達(dá)文件的末尾。

  3、繼續(xù)讀取文件,直至到達(dá)文件末尾,邊讀取邊打印每行。

  4、關(guān)閉文件。

  記住這些步驟,我將回顧在這里使用的每個(gè)文件函數(shù)。

  fopen

  fopen 函數(shù)將創(chuàng)建與文件的連接。我之所以說“創(chuàng)建連接”,是因?yàn)槌舜蜷_文件之外,fopen 還可以打開一個(gè) URL:

  $fh = fopen("http://127.0.0.1/", "r");

  這行代碼將創(chuàng)建一個(gè)與以上頁面的連接,并允許您開始像讀取一個(gè)本地文件一樣讀取它。

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

  feof

  feof 命令將檢測您是否已經(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 中限制最大行長度。例如,使用以下代碼將行長度限制為 80 個(gè)字符:

  $string = fgets($file_handle, 81);

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

  fread

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

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

  $fh = fopen("myfile", "rb");

  $data = fread($file_handle, 4096);

  以上代碼將讀取 4,096 字節(jié) (4 KB) 的數(shù)據(jù)。注:不管指定多少字節(jié),fread 都不會(huì)讀取超過 8,192 個(gè)字節(jié) (8 KB)。

  用PHP讀取文件的正確方法(1)

【用PHP讀取文件的正確方法】相關(guān)文章:

php讀取文件內(nèi)容的方法09-14

PHP中讀取大文件實(shí)現(xiàn)方法詳解09-23

php使用file-get-contents讀取大文件的方法07-12

PHP快速讀取大文件的例子10-24

php使用fgetcsv讀取csv文件出現(xiàn)亂碼的解決方法10-22

php使用fgetcsv讀取csv文件出現(xiàn)亂碼09-23

講述java讀取properties文件的方法08-13

Java的jar文件中讀取數(shù)據(jù)的方法09-27

php文件鎖怎么用07-03

從Java的jar文件中如何讀取數(shù)據(jù)的方法10-18