表單提交的 textarea 值以 \r\n (CRLF) 作為換行分隔,直接使用 explode 需注意修剪空白與引號差異。
<?php
$raw = $_POST['keywords'] ?? '';
$trimmed = trim($raw); // 移除首尾空白,避免產生空元素
$lines = explode("\r\n", $trimmed); // 必須使用雙引號 "\r\n"
// 進一步過濾空行
$lines = array_filter($lines, function($v) { return trim($v) !== ''; });
print_r($lines);
/* 輸出範例
Array
(
[0] => 關鍵字1
[1] => 關鍵字2
[2] => 關鍵字3
)
*/
| 錯誤寫法 | 問題 | 正確寫法 |
|---|---|---|
explode('\r\n', $str) | 單引號不解析跳脫字元,會尋找字面字串 \r\n | explode("\r\n", $str) |
未 trim() | 首尾換行會產生空元素 | 先 trim() 再分割 |
僅用 \n | Windows 來源資料為 \r\n,會殘留 \r | 用 "\r\n" 或 preg_split('/\r?\n/', $str) 相容跨平台 |
$lines = preg_split('/\r?\n/', trim($raw)); // 同時支援 \n (Linux/Mac) 與 \r\n (Windows)