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

PHP 依換行符分割 textarea 內容為陣列:trim + explode 正確處理 \r\n 與空白行

     編輯:PHP 綜合知識

HTML <textarea> 提交的資料,換行符為 \r\n (Windows)、\n (Linux/Mac)、\r (舊 Mac)。直接 explode("\r\n") 會遺漏單一 \n 的行。本文提供標準化處理流程:trim() 移除首尾空白 → preg_split() 多格式分割 → array_filter() 移除空行。

標準化處理代碼

 $v !== '');

print_r($lines);
/*
Array
(
    [0] => 第一行內容
    [1] => 第二行內容
    [2] => 第三行內容
)
*/
?>

常見錯誤寫法對比

寫法問題
explode("\r\n", $str)僅分割 \r\n,Linux \n 無法分割,整段變單一元素。
explode("\n", $str)Windows \r\n 會殘留 \r 於行尾 ("line\r")。
explode(PHP_EOL, $str)PHP_EOL 為**伺服器**作業系統換行符,非客戶端瀏覽器提交格式。
未 trim() 直接分割首尾換行產生空元素 ['', 'line1', 'line2', '']。
單引號 explode('\r\n', ...)單引號不解析跳脫字元,字面分割字串 "\r\n"。

進階:保留空行結構 (如程式碼編輯器)

// 移除 PREG_SPLIT_NO_EMPTY,保留空行位置
$lines = preg_split('/\r\n|\r|\n/', $raw);
// 結果: ['line1', '', 'line3'] → 索引 1 為空行

一次性標準化換行符 (存儲/顯示用)

// 統一轉為 \n (Unix 風格)
$normalized = preg_replace('/\r\n|\r/', "\n", $raw);

// 統一轉為 \r\n (Windows 風格)
$normalized = preg_replace('/\r\n|\n|\r/', "\r\n", $raw);

// HTML 顯示換行
echo nl2br(htmlspecialchars($normalized));

正確處理跨平台換行符是表單資料清洗的基礎功夫。採用 trim() + preg_split() + PREG_SPLIT_NO_EMPTY 組合,能穩健應對各種瀏覽器/作業系統提交的資料格式。

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