在上一篇文章中我們介紹了又給大家介紹了一種一次性讀取整個文件的方法,并且該方法可以將讀取到時內(nèi)容存入一個字符串中,感興趣的可以點(diǎn)擊《php如何將文件全部數(shù)據(jù)存入一個字符串中》查看。下面繼續(xù)介紹一次性讀取整個文件的方法。
上篇文章中的方法,會在一行輸出文件的全部內(nèi)容,文件數(shù)據(jù)少還好,如果文件數(shù)據(jù)太多,例如:
使用file_get_contents()函數(shù)進(jìn)行讀取輸出:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filestr = file_get_contents($file); echo $filestr; ?>
輸出結(jié)果為
可以看出這樣輸出的內(nèi)容不利于閱讀了。那么怎么做可以逐行輸出文件全部內(nèi)容呢?可以借助數(shù)組。
可以先一次性讀取整個文件,并將數(shù)據(jù)逐行存入數(shù)組,每一行數(shù)據(jù)對應(yīng)一個數(shù)組元素即可。
我們來看看下面的代碼:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filestr = file($file,FILE_IGNORE_NEW_LINES); var_dump($filestr); ?>
輸出結(jié)果:
是不是便于閱讀了,且有時需要讀取全部內(nèi)容,但暫時只需要其中的一行數(shù)據(jù),就可以使用 數(shù)組名[下標(biāo)]
的形式來取指定行的數(shù)據(jù)。例如想要第三行的數(shù)據(jù),那么可以:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filestr = file($file,FILE_IGNORE_NEW_LINES); echo $filestr[2]; //數(shù)組下標(biāo)是從0開始的 ?>
輸出結(jié)果:
下面我們來了解一下里面的關(guān)鍵函數(shù)file()。
file($filename,$flags,$context)函數(shù)接受一個必需參數(shù)$filename
(要讀取的文件),兩個可省略的參數(shù)$flags
和$context
(文件句柄的環(huán)境)。
但一般還是會設(shè)置$flags
參數(shù)的,該參數(shù)可以是以下一個或多個常量:
-
FILE_USE_INCLUDE_PATH
:在 include_path (在 php.ini 中)中查找文件,默認(rèn)為 FALSE;如果想,則設(shè)置參數(shù)值為 '1'。 -
FILE_IGNORE_NEW_LINES
:在數(shù)組每個元素的末尾不要添加換行符; -
FILE_SKIP_EMPTY_LINES
:跳過空行。
例如上例,如果省略“FILE_IGNORE_NEW_LINES”,輸出會是這樣的:
而如果一個文件中包含空行:
使用上例中的代碼讀取文件,輸出結(jié)果為:
就可以設(shè)置“FILE_SKIP_EMPTY_LINES”來跳過空行,讀取下一行數(shù)據(jù)。
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filestr = file($file,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); var_dump($filestr); ?>
輸出結(jié)果為:
$flags
參數(shù)如果設(shè)置多個常量值,需要使用|
分隔。
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個哦?!?→PHP文件基礎(chǔ)操作
推薦:《PHP面試題大匯總(收藏)》《php視頻教程》