在之前的文章中我們介紹了一次性讀取整個文件,獲取全部數據的方法,感興趣的可以點擊鏈接查看《php文件操作之如何一次性獲得文件的全部數據 》。今天我們再介紹一個一次讀取整個檔案的方法,有需要的可以參考參考。
今天要介紹給大家的方法,不僅可以一次讀取整個文件,還可以將讀取的文件內容存入一個字串中,是不是很神奇。這就要用到一個PHP內建函數file_get_contents(),今天就來了解這個函數。
還是以「test.txt」檔案為例,該檔案裡面的內容為:
#我們先來看看如何使用file_get_contents()函數讀取文件,將內容存入字串中。
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr = file_get_contents($file); if($filestr){ echo $filestr; }else{ echo '读取失败!'; } ?>
輸出結果:
可以看出,不需要開啟或關閉檔案動作,直接使用「file_get_contents($file )
」語句就可以一次讀取整個檔案了,這一點和之前介紹的readfile()函數很像,但它們還是有所不同的:file_get_contents()函數會將讀取的資料存入一個字串中,而readfile()函數是存入輸出緩衝。
因此readfile()函數不需要echo、print等輸出語句就可以輸出,直接「readfile($file);
」就行;而file_get_contents()函數需要藉助輸出語句才能將讀取的內容進行輸出,「echo file_get_contents($file)
」。
下面我們來具體了解file_get_contents()函數的用法:
file_get_contents($filename,$include_path,$context,$offset,$max_length)
函數只有一個必要參數$filename
(要讀取的文件,可以是文件名,也可以是文件路徑),但有4個可省略的參數:$include_path
(預設值FALSE )、$context
(檔案句柄環境,值可為NULL)、$offset
(開始讀取的位置)、$max_length(讀取位元組數)。
其中,不能對遠端檔案使用$offset
參數;如果省略$max_length
參數,則會和上面範例那樣,預設讀取檔案的全部內容。
下面我們來看看$offset
和$max_length
參數。
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr1 = file_get_contents($file,FALSE,NULL,3); echo $filestr1; $filestr2 = file_get_contents($file,FALSE,NULL,0,15); echo "<br>".$filestr2; ?>
輸出結果:
可以看出,$max_length
參數設定為15,卻只取得了7個字符,這是為什麼呢?
那是因為:在file_get_contents()函數中一個 UTF-8 編碼的漢字佔三個字元長度。而如果設定的獲取長度不夠,無法取得到的那個中文字符,就會顯示為?
號。
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr1 = file_get_contents($file,FALSE,NULL,6); echo $filestr1; $filestr2 = file_get_contents($file,FALSE,NULL,0,16); echo "<br>".$filestr2; $filestr3 = file_get_contents($file,FALSE,NULL,0,18); echo "<br>".$filestr3; ?>
輸出結果:
好了就說到這裡了,有其他想知道的,可以點擊這個哦。 → →php影片教學
最後給大家推薦閱讀一個經典課程《PHP字串處理(玉女心經版)》,免費的~快來學習啊!
以上是php如何將檔案全部資料存入一個字串中的詳細內容。更多資訊請關注PHP中文網其他相關文章!