字符串空白處理是 PHP 開發中的高頻操作。本文系統整理從基礎函數到正則進階的 5 種去除空格/換行/制表符方案,並針對不同場景(首尾、全局、數組批量、保留單詞間隔)給出最佳實踐代碼。
trim() 系列<?php
$str = " 使用函數trim去掉字符串兩端空白字符 ";
echo "處理前長度: " . strlen($str) . "\n"; // 含空格
$str1 = trim($str);
echo "處理後長度: " . strlen($str1) . "\n"; // 無首尾空格
// 指定刪除字符集
$str2 = "##標題##";
echo trim($str2, "#"); // 輸出: 標題
?>
trim():刪除首尾空白(空格、\t、\n、\r、\0、\x0B)ltrim() / rtrim():單側刪除str_replace()<?php
$str = "ad dfd dfd";
// 僅替換普通空格
echo str_replace(" ", "", $str); // adddfddfd
// 替換多種空白需多次調用或用正則
?>
缺點:無法一次性處理 \t、\n 等不可見字符,需鏈式調用。
<?php
$arr = ["ad dfd dfd", "saf sdf dsf", "sdf dsfgfd dd", "dfd dfferw "];
$arr2 = array_map('trim', $arr); // 一鍵處理所有元素首尾
print_r($arr2);
/*
Array (
[0] => ad dfd dfd
[1] => saf sdf dsf
[2] => sdf dsfgfd dd
[3] => dfd dfferw
)
*/
?>
推薦使用 array_map('trim', $arr),簡潔高效,保留元素內部空格。
以下模式經實測,能精準處理各類空白字符組合:
<?php
$string = "第1行\n第2行\t \r第3行 末尾";
// 方案 1:刪除行尾空白(保留換行結構)
$string = preg_replace('/\s+$/m', '', $string);
// 方案 2:刪除所有連續空白為單個空格(適合文本規範化)
$string = preg_replace('/\s+/', ' ', $string);
// 方案 3:完全移除所有空白字符(含換行、制表)
$string = preg_replace('/\s+/', '', $string);
// 方案 4:僅移除行首行尾空白,保留段落結構
$string = preg_replace('/^\s+|\s+$/m', '', $string);
?>
| 正則模式 | 作用 | 適用場景 |
|---|---|---|
/\s+$/m | 刪除每行尾部空白 | 代碼格式化、日志清理 |
/\s+/ | 合併連續空白為單空格 | 用戶輸入正規化、全文搜索預處理 |
/\s+/ 替換為空 | 徹底移除所有空白 | 數據指纹、壓縮傳輸 |
/^\s+|\s+$/m | 首尾去空白,保留段落 | 文章內容存儲、Markdown 渲染前處理 |
trim() 最快,原生 C 實現str_replace() 比正則快 3-5 倍preg_replace() 雖慢但功能最全array_map('trim', $arr) 避免手寫循環,可讀性最佳提示:處理用戶提交的表單數據時,建議組合使用
trim()+preg_replace('/\s+/', ' ', $str),既去除首尾干擾,又規範化內部空白,利於後續驗證與存儲。