首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 讀取檔案的多種方法與最佳實踐

     編輯:PHP 綜合知識

前言:工欲善其事,必先利其器

PHP 提供豐富的檔案處理函數,從底層的 fopen 到高階的 file_get_contents,各有適用場景。本文系統梳理常見讀取方法,助你選對工具。

傳統 fopen/fgets 迴圈模式

適合逐行處理大型檔案,記憶體佔用低:

$handle = fopen("myfile", "r");
while (!feof($handle)) {
    $line = fgets($handle);
    echo $line;
}
fclose($handle);

關鍵函數說明:

  • fopen:建立檔案或 URL 連線,模式 "r" 唯讀,二進位跨平台用 "rb"
  • feof:檢測是否讀至檔案末尾(或 socket 逾時)
  • fclose:關閉連線釋放資源

一次讀入陣列:file()

適合中小型檔案,程式碼簡潔:

$lines = file("myfile", FILE_IGNORE_NEW_LINES);
foreach ($lines as $line) {
    // 處理每一行
}

一次讀入字串:file_get_contents()

效能最佳,適合需整體處理內容(如正則搜尋、JSON 解析):

$content = file_get_contents("myfile");
// 或讀取遠端資源
$json = file_get_contents("https://api.example.com/data.json");

其他實用讀取函數

函數用途
fgetss讀取並移除 HTML/PHP 標籤
fscanf格式化讀取(類 C 語言 scanf)
fread指定長度讀取(二進位檔案常用)
SplFileObject物件導向介面,支援迭代器、CSV 解析

選擇指南

  • 逐行處理大檔 → fopen + fgets
  • 需隨機存取行號 → file()
  • 整體內容處理 → file_get_contents()
  • CSV/結構化資料 → SplFileObject 或 fgetcsv
  • 二進位檔案 → fread + "rb" 模式

注意事項

  • 永遠檢查 fopen 回傳值,失敗會回傳 false
  • 善用 clearstatcache() 避免檔案狀態快取誤判
  • 大檔案避免一次性讀入記憶體
  • 處理使用者上傳檔案時,務必驗證路徑防止目錄遍歷攻擊
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved