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

PHP 移除換行符總結:str_replace、preg_replace 與 PHP_EOL 最佳實踐

     編輯:PHP 綜合知識

為什麼要處理換行符?

跨平台資料交換時,Windows (\r\n)、Linux/Unix (\n)、舊版 Mac (\r) 的換行符不一致,會導致字串比對失敗、資料庫儲存異常、前端顯示錯亂。統一移除或轉換換行符是後端處理的基本功。

三種常見寫法比較

1. 針對單一換行符替換

$content = str_replace("\n", "", $content);  // 僅移除 LF
$content = str_replace("\r\n", "", $str);    // 僅移除 CRLF

缺點:無法一次處理多種格式,跨平台資料易遺漏。

2. 正則表達式一次搞定

$content = preg_replace("/\s/", "", $content);  // 移除所有空白字元(含空格、Tab、換行)

缺點:過度清理,連正常空格也會被移除,導致單詞黏連。

3. 官方推薦:PHP_EOL 跨平台常數(最佳實踐)

$str = str_replace(PHP_EOL, '', $str);

優點:PHP 內建常數,自動對應執行環境的換行符(Windows 下為 \r\n,Linux/Mac 下為 \n),程式碼可攜性最強。

進階:一次清理所有已知換行格式

若不確定資料來源平台,可用陣列一次替換:

$str = str_replace(["\r\n", "\r", "\n"], '', $str);

或正則精準匹配換行符(保留空格):

$str = preg_replace('/\r\n|\r|\n/', '', $str);

常見轉義字元對照表

轉義字元名稱WindowsLinux/UnixMac (OS 9 以前)
\nLine Feed (LF)換行 + 歸行首僅換行不作換行
\rCarriage Return (CR)歸行首歸行首換行 + 歸行首
\tTab跳格(移至下一欄)

實務範例:處理上傳的 CSV/LOG 檔案

<?php
// 讀取檔案內容
$raw = file_get_contents('data.csv');

// 統一轉為 LF 再按行分割
$lines = preg_split('/\r\n|\r|\n/', $raw);

// 或直接移除所有換行符
$clean = str_replace(["\r\n", "\r", "\n"], ' ', $raw);
?>

總結建議

  • 單一平台、確定格式:直接 str_replace("\n", '') 效能最好。
  • 跨平台、來源未知:優先使用 PHP_EOL 或陣列替換 ["\r\n","\r","\n"]。
  • 需保留段落結構:將換行轉為 HTML <br>(nl2br())而非直接移除。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved