2.7.4 讀取整個文件:readfile()、fpassthru()和file()
除了可以每次讀取文件一行外,還可以一次讀取整個文件。PHP提供了4種不同的方式來讀取整個文件。
第一種方式是readfile()。可以使用如下一行語句來代替前面所編寫的所有腳本:
- define('DOCPATH', dirname(__FILE__).'/');
- echo readfile(DOCPATH.'form.class.php');
調用readfile()函數將打開這個文件,並且將文件內容輸出到標准輸出(瀏覽器)中,然后再關閉這個文件。readfile()的函數原型如下所示:
第二個可選參數指定了PHP是否應該在include_path中查找文件,這一點與fopen()函數一樣。可選的context參數只有在文件被遠程打開(例如通過HTTP)時才使用;我們將在第19章詳細介紹這種用法。這個函數的返回值是從文件中讀出的字節總數。
第二種方式是fpassthru()。要使用這個函數,必須先使用fopen()打開文件。然后將文件指針作為參數傳遞給fpassthru()。這樣就可以把文件指針所指向的文件內容發送到標准輸出。然后再將這個文件關閉。
可以使用如下代碼替代前面的腳本:
如果讀操作成功,fpassthru()函數將返回true,否則返回false。
第三種讀取整個文件的函數是file()。除了可以將文件內容回顯到標准輸出外,它和readfile()是一樣的,它是把結果發送到一個數組中。我們將在第3章介紹數組時詳細介紹。作為參考,可以按如下方式調用它:
這行代碼可以將整個文件讀入到一個名為$filearray的數組中。文件中的每一行都將作為一個元素保存在這個數組中。
最后,在PHP 4.3.0中,還可以使用file_get_contents()函數。這個函數與readfile()相同,但是該函數將以字符串的形式返回文件內容,而不是將文件內容回顯到瀏覽器中。這個新函數的優點在於,它是二進制安全的,這一點不同於file()函數。