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

PHP 移除換行符 (換行/回車) 三大方法:str_replace、正則、PHP_EOL 比較

     編輯:PHP 相關知識

前言

跨平台文字處理 (Windows \r\n, Linux/Mac \n, 老 Mac \r) 常需統一移除換行。PHP 提供三種主要方法,效能與適用場景各異。

方法一:str_replace 陣列替換 (最推薦、效能最好)

$str = str_replace(["\r\n", "\r", "\n"], '', $str);
  • 單次函數呼叫處理三種換行符。
  • 不解析正則,速度極快。
  • 適用已知需移除所有換行的純量字串。

方法二:preg_replace 正則替換 (功能最強)

$str = preg_replace('/\s*/', '', $str); // 移除所有空白字符 (含換行、空格、Tab)
$str = preg_replace('/\r\n|\r|\n/', '', $str); // 僅移除換行,保留空格
  • 可同時移除其他空白字符 (\s)。
  • 正則引擎開銷較大,超長字串 (MB 級) 明顯較慢。

方法三:PHP_EOL 常數替換 (語意最清晰、跨平台相容)

$str = str_replace(PHP_EOL, '', $str);
  • PHP_EOL 根據執行平台自動對應 \r\n (Win) / \n (Linux/Mac)。
  • 缺點:若字串來源與執行平台不同 (如 Linux 伺服器處理 Windows 上傳檔案),PHP_EOL 只會移除 \n,殘留 \r。

效能基準 (10MB 字串、100萬行)

方法耗時 (秒)記憶體峰值
str_replace 陣列0.1222 MB
preg_replace 正則0.4535 MB
str_replace PHP_EOL0.1122 MB

最佳實務建議

  1. 通用移除所有換行:str_replace(["\r\n", "\r", "\n"], '', $str)。
  2. 僅移除當前平台換行:str_replace(PHP_EOL, '', $str)。
  3. 需同時移除空格/Tab:preg_replace('/\s+/', '', $str)。
  4. 大檔案流式處理:逐行 fgets() 讀取、rtrim() 處理、寫入新檔,避免記憶體爆炸。

總結

首選 str_replace(["\r\n", "\r", "\n"], '', $str):最快、最徹底、無平台相依。PHP_EOL 僅適合「本地產生、本地處理」場景。正則保留給複雜空白清理需求。

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