在之前的文章中我們介紹了一次性讀取整個文件,獲取全部數據的方法,感興趣的可以點擊鏈接查看《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字符串處理(玉女心經版)》,免費的~快來學習啊!
站長資訊網