file

(PHP 3, PHP 4, PHP 5)

file -- 把整個檔案讀入一個陣列中

說明

array file ( string filename [, int use_include_path [, resource context]] )

readfile() 一樣,只除了 file() 將檔案作為一個陣列返回。陣列中的每個單元都是檔案中相應的一行,內含換行符在內。若果失敗 file() 返回 FALSE

若果也想在 include_path 中搜尋檔案的話,可以將可選參數 use_include_path 設為 "1"。

<?php
// 將一個檔案讀入陣列。本例中通過 HTTP 從 URL 中取得 HTML 源檔案。
$lines file('http://www.example.com/');
// 在陣列中迴圈,顯示 HTML 的源檔案並加上行號。
foreach ($lines as $line_num => $line) {
    echo 
"Line #<b>{$line_num}</b> : " htmlspecialchars($line) . "<br />\n";
}
// 另一個例子將 web 頁面讀入字串。參見 file_get_contents()。
$html implode(''file ('http://www.example.com/'));
?>

提示: 若果「fopen wrappers」已經被啟動,則在本函數中可以把 URL 作為檔案名來使用。請參閱 fopen() 函數來取得怎樣指定檔案名的詳細訊息以及支援 URL 封裝協定的清單:附錄 M

注: 返回的陣列中每一行都內含了行結束符,因此若果不需要行結束符時還需要使用 rtrim() 函數。

注: 若果碰到 PHP 在讀取檔案時不能識別 Macintosh 檔案的行結束符,可以啟動 auto_detect_line_endings 運行時配置選項。

注: 從 PHP 4.3.0 開始可以用 file_get_contents() 來將檔案讀入到一個字串返回。

從 PHP 4.3.0 開始 file() 可以安全用於二進位檔案。

注: 對 context 的支援是 PHP 5.0.0 增加的。有關 context 的說明見參考 CXLV, Stream Functions

警示

當使用 SSL 時,Microsoft IIS 將違反協定不傳送 close_notify 旗標就關閉連線。PHP 將在到達資料尾端時報告 "SSL: Fatal Protocol Error"。要繞過此問題,應將 error_reporting 層級降低為不內含警示。PHP 4.3.7 及更高版本可以在當使用 https:// 封裝協定開啟流的時候檢驗出有此問題的 IIS 伺服器並抑制警示。若果使用 fsockopen() 來建立一個 ssl:// 套接字,則需要自己檢驗並抑制警示訊息。

參見 readfile()fopen()fsockopen()popen()file_get_contents()include()