在之前的文章中我們介紹了一次性讀取整個(gè)文件,獲取全部數(shù)據(jù)的方法,感興趣的可以點(diǎn)擊鏈接查看《php文件操作之如何一次性獲得文件的全部數(shù)據(jù)》。今天我們?cè)俳榻B一種一次性讀取整個(gè)文件的方法,有需要的可以參考參考。
今天給大家介紹的方法,不僅可以一次性讀取整個(gè)文件,還可以將讀取的文件內(nèi)容存入一個(gè)字符串中,是不是很神奇。這就要用到一個(gè)PHP內(nèi)置函數(shù)file_get_contents(),今天就來(lái)了解一下這個(gè)函數(shù)。
還是以“test.txt”文件為例,該文件里面的內(nèi)容為:
我們先來(lái)看看如何使用file_get_contents()函數(shù)讀取文件,將內(nèi)容存入字符串中。
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filestr = file_get_contents($file); if($filestr){ echo $filestr; }else{ echo '讀取失??!'; } ?>
輸出結(jié)果:
可以看出,不需要打開(kāi)或關(guān)閉文件操作,直接使用“file_get_contents($file)
”語(yǔ)句就可以一次性讀取整個(gè)文件了,這一點(diǎn)和之前介紹的readfile()函數(shù)很像,但它們還是有所不同的:file_get_contents()函數(shù)會(huì)將讀取的數(shù)據(jù)存入一個(gè)字符串中,而readfile()函數(shù)是存入輸出緩沖中。
因此readfile()函數(shù)不需要echo、print等輸出語(yǔ)句就可以輸出,直接“readfile($file);
”就行;而file_get_contents()函數(shù)需要借助輸出語(yǔ)句才能將讀取的內(nèi)容進(jìn)行輸出,“echo file_get_contents($file)
”。
下面我們來(lái)具體了解一下file_get_contents()函數(shù)的用法:
file_get_contents($filename,$include_path,$context,$offset,$max_length)
函數(shù)只有一個(gè)必需參數(shù)$filename
(要讀取的文件,可以是文件名,也可是文件路徑),但有4個(gè)可省略的參數(shù):$include_path
(默認(rèn)值FALSE)、$context
(文件句柄環(huán)境,值可為NULL)、$offset
(開(kāi)始讀取的位置)、$max_length(讀取字節(jié)數(shù))。
其中,不能對(duì)遠(yuǎn)程文件使用$offset
參數(shù);如果省略$max_length
參數(shù),則會(huì)和上面示例那樣,默認(rèn)讀取文件的全部?jī)?nèi)容。
下面我們來(lái)看看$offset
和$max_length
參數(shù)。
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $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; ?>
輸出結(jié)果:
可以看出,$max_length
參數(shù)設(shè)置為15,卻只獲取了7個(gè)字符,這是為什么呢?
那是因?yàn)椋涸趂ile_get_contents()函數(shù)中一個(gè) UTF-8 編碼的漢字占三個(gè)字符長(zhǎng)度。而如果設(shè)置的獲取長(zhǎng)度不夠,無(wú)法獲取到的那個(gè)中文字符,就會(huì)顯示為?
號(hào)。
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $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; ?>
輸出結(jié)果:
好了就說(shuō)到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦。→ →php視頻教程
最后給大家推薦閱讀一個(gè)經(jīng)典課程《PHP字符串處理(玉女心經(jīng)版)》,免費(fèi)的~快來(lái)學(xué)習(xí)??!