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

PHP 讀取 TXT 文件並轉為陣列:file_get_contents() 與 explode() 實戰

     編輯:PHP 綜合知識

需求場景

常見需求:將一個純文字文件(如編號列表、配置項)逐行讀取並轉換為 PHP 陣列供後續處理。以 2010-12-15.txt 為例,內容為每行一個代碼(01~24、T01~T16)。

核心思路:三步走

  1. 讀取整個文件:使用 file_get_contents() 將文件內容一次性載入字符串。
  2. 分割字符串:用 explode() 依據換行符拆分為陣列。
  3. 遍歷處理:用 count() 獲取長度,配合迴圈逐行操作。

代碼實現

<?php
$file = '2010-12-15.txt';
$content = file_get_contents($file);

// 關鍵點:Windows 換行符是 \r\n,Linux 是 \n,Mac 老版本是 \r
// 建議用 PHP_EOL 常量或正則兼容多平台
$array = explode("\r\n", $content); // 或 preg_split('/\r?\n/', $content)

foreach ($array as $line) {
    echo $line . '<br />';
}
?>

深入解析:換行符的跨平台坑

文章原文詳細解釋了 \r (Carriage Return) 和 \n (Newline) 的歷史由來:

  • Windows:\r\n (CRLF)
  • Linux/Unix/macOS:\n (LF)
  • 舊版 Mac OS 9:\r (CR)

最佳實踐:使用 preg_split('/\r?\n/', $content) 或先統一換行符 str_replace(["\r\n", "\r"], "\n", $content) 再用 explode("\n", ...),確保跨平台兼容。

file_get_contents() 進階優勢

  • 性能優化:若作業系統支援,會自動使用記憶體映射 (mmap) 技術,大文件讀取極快。
  • 靈活性:支援 URL 直接讀取(需開啟 allow_url_fopen),如 file_get_contents('https://example.com/data.txt')。
  • 二進位安全:不僅限文本,圖片、PDF 等二進位文件同樣適用。

替代方案對比

方法適用場景記憶體佔用速度
file()直接返回陣列,每行一個元素中等快
fopen() + fgets()超大文件、逐行處理、邊讀邊算極低(流式)較慢
SplFileObject物件導向、支援迭代器、CSV 解析低快

總結

對於中小型文本文件,file_get_contents() + explode() 是最簡潔高效的組合。關鍵在於正確處理換行符,建議封裝為通用工具函數以備複用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved