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

PHP 去除字符串首尾空格的 4 種方法:ltrim、rtrim、trim、正則深度對比

     編輯:PHP 相關知識

PHP 去除字符串首尾空格的 4 種方法:ltrim、rtrim、trim、正則深度對比

PHP 提供了三大內置修剪函數 ltrim()、rtrim()、trim(),加上正則替換可處理全角空格等特殊場景。本文通過代碼實例詳細對比其參數、行為差異與性能,幫助選擇最適合的方案。

1. ltrim() —— 只刪除左側(開頭)空格

<?php
$str = " ...I'm Jacky...";
echo "原始:a{$str}
"; $left = ltrim($str); echo "ltrim:a{$left}
"; // 刪除指定字符(如點號) $lleft = ltrim($left, "."); echo "ltrim('.'):{$lleft}"; ?>
  • 語法:ltrim(string $str, string $charlist = " \n\r\t\v\0")
  • $charlist:指定要刪除的字符集合(而非子串),默認刪除 ASCII 空白字符(空格、換行、制表符、垂直製表、NULL)。
  • 返回:新字符串,原字符串不變。

2. rtrim() —— 只刪除右側(結尾)空格

<?php
$str = "htm ";
echo "原始:{$str}l
"; echo "rtrim:". rtrim($str) ."l"; ?>
  • 參數同 ltrim(),作用方向相反。
  • 常用於清理文件路徑尾部斜杠:rtrim($path, '/')。

3. trim() —— 同時刪除首尾空格(最常用)

<?php
$str = " This line contains\tliberal \r\n use of  whitespace.\n\n";
// 1. 首尾修剪
$str = trim($str);
// 2. 合併連續空白為單個空格(進階清理)
$str = preg_replace('/\s(?=\s)/', '', $str); // 刪除後面跟著空白的空白字符
$str = preg_replace('/[\n\r\t]/', ' ', $str); // 換行製表轉空格
echo $str;
?>
  • 默認字符表同 ltrim。
  • 組合拳:trim() + 正則可實現「標準化空白」:去首尾、合併連續、統一換行製表為空格。

4. 正則替換 —— 處理全角空格、零寬空格等特殊字符

<?php
$str = " 幫客之家 www.jb51.net "; // 含全角空格 U+3000
// 刪除開頭全角/半角空格
$str = mb_ereg_replace('^( | )+', '', $str);
// 刪除結尾全角/半角空格
$str = mb_ereg_replace('( | )+$', '', $str);
// 將中間連續空格替換為換行(示例)
echo mb_ereg_replace(' ', "\n ", $str);
?>
  • mb_ereg_replace 支持多字節編碼,能匹配全角空格 (U+3000)。
  • 正則模式:^[\s\x{3000}]+、[\s\x{3000}]+$(需 u 修飾符)更通用。
  • 性能提示:正則比內置函數慢 5-10 倍,僅在必須處理全角/特殊空白時使用。

性能與選型總結

函數適用場景相對性能備註
trim()99% 場景:去除首尾 ASCII 空白★★★★★ (基準)首選,C 層實現極快
ltrim()/rtrim()單側修剪、指定字符集修剪(如路徑尾斜杠)★★★★★同 trim 級別
正則 mb_ereg_replace全角空格、零寬空格、非標準空白字符★★☆☆☆最後手段,注意編碼一致性

最佳實踐建議

  1. 輸入入口統一 trim():I('post.name', '', 'trim')(ThinkPHP)或 $name = trim($_POST['name'])。
  2. 數據庫存儲前再次 trim():防禦性編程,避免臟數據入庫。
  3. 輸出前不做修剪:保持用戶原始輸入格式(如代碼片段、詩歌排版),僅在存儲/比較時標準化。
  4. 全角空格場景:採用 preg_replace('/^[\s\x{3000}]+|[\s\x{3000}]+$/u', '', $str) 一次性搞定首尾全半角空格。

記住:內置函數永遠是首選,正則只處理內置函數覆蓋不到的邊緣情況。

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