PHP 提供多種讀取文件的方式,適用場景各異。實際開發中務必記得 fclose() 釋放資源(或使用 file_get_contents() 等自動關閉的函數)。
$fp = fopen('test.txt', 'r');
$content = fread($fp, filesize('test.txt'));
fclose($fp);
echo str_replace("\r\n", '<br />', $content);
適用:中小文件,需控制讀取長度時。
$content = file_get_contents('test.txt');
echo str_replace("\r\n", '<br />', $content);
適用:中小文件,代碼最少,**推薦首選**。
$fp = fopen('test.txt', 'r');
$buffer = 1024;
$content = '';
while (!feof($fp)) {
$content .= fread($fp, $buffer);
}
fclose($fp);
echo str_replace("\r\n", '<br />', $content);
適用:大文件,避免一次性載入佔盡內存。
$lines = file('test.txt');
foreach ($lines as $line) {
echo $line . '<br />';
}
適用:需逐行處理、統計行數的場景。
$fp = fopen('test.txt', 'r');
$content = '';
while (!feof($fp)) {
$content .= fgets($fp); // 預設 1024 字節
}
fclose($fp);
echo str_replace("\r\n", '<br />', $content);
適用:超大文件,逐行處理邏輯複雜時。
| 場景 | 推薦方法 |
|---|---|
| 中小文件、簡單讀取 | file_get_contents() |
| 需控制讀取長度 | fread() |
| 大文件、分塊處理 | fread() + 循環 或 fgets() |
| 逐行邏輯、統計行數 | file() 或 fgets() |
**注意**:所有打開句柄的方式(fopen)必須配對 fclose(),否則會洩漏文件描述符。