| 函數 | 別名 | 移除位置 | 預設移除字元 |
| trim() | - | 兩端 | " \t\n\r\0\x0B" (空白、Tab、換行、CR、Null、垂直定位) |
| ltrim() | - | 左端(開頭) |
| rtrim() | chop() | 右端(結尾) |
| chop() | rtrim() | 右端(結尾) |
基本範例
<?php
$text = "\t\t jb51.net! \t\t ";
echo "ltrim: [" . ltrim($text) . "]\n"; // [jb51.net! ]
echo "rtrim: [" . rtrim($text) . "]\n"; // [ jb51.net!]
echo "trim: [" . trim($text) . "]\n"; // [jb51.net!]
echo "chop: [" . chop($text) . "]\n"; // [ jb51.net!]
?>
自訂移除字元清單
<?php
$str = "---Hello World---";
// 移除連字號
echo trim($str, '-') . "\n"; // Hello World
// 移除多種字元
echo trim($str, '-Hd') . "\n"; // ello Worl (移除 H, d, -)
/* 注意:第二參數為字元「清單」,非字串整體。
trim($str, 'ab') 會移除所有 a 和 b,而非 "ab" 子字串。 */
?>
多位元組字元(UTF-8)注意
- PHP 7+
trim() 等函數支援 UTF-8 多位元組字元,但第二參數若包含多位元組字元,可能無法正確匹配(視為單獨位元組)。
- 需移除全形空白
U+3000 等:trim($str, " \t\n\r\0\x0B\x{3000}")(需雙引號解析 Unicode 逸出)。
- 複雜情境建議用
preg_replace('/^[\s\p{Z}]+|[\s\p{Z}]+$/u', '', $str) 以 Unicode 空白屬性匹配。
常見誤區
- ❌ 以為
trim() 會移除字串「中間」的空白 → 僅移除首尾。
- ❌
chop() 在某些語言意為「截斷」,PHP 中是 rtrim() 別名,易混淆,建議統一用 rtrim()。
- ❌ 移除特定子字串用
trim($str, 'abc') → 實際移除所有 a、b、c 字元。
總結
掌握 trim/ltrim/rtrim 三大核心函數與自訂字元清單語法,即可處理 90% 空白清理需求。多位元組環境注意字元清單編碼,複雜情境改用正則。希望本文對您的 PHP 程式設計有所幫助。
- 上一篇文章: PHP 在字串中搜尋子字串:strpos() 進階用法與回傳型別分析
- 下一篇文章: PHP 動態建立函數:create_function() 用法與現代替代方案
Copyright ©
程式碼之家 All Rights Reserved