2024 年 PHP Conference Japan

trim

(PHP 4, PHP 5, PHP 7, PHP 8)

trim移除字串頭尾的空白字元(或其他字元)

說明

trim(字串 $string, 字串 $characters = " \n\r\t\v\x00"): 字串

此函式會傳回一個字串,其中已移除 string 開頭和結尾的空白字元。如果沒有第二個參數,trim() 將會移除下列字元:

  • " "ASCII SP 字元 0x20,一個普通的空格。
  • "\t"ASCII HT 字元 0x09,一個定位鍵。
  • "\n"ASCII LF 字元 0x0A,換行(line feed)。
  • "\r"ASCII CR 字元 0x0D,歸位(carriage return)。
  • "\0"ASCII NUL 字元 0x00,空位元組(NUL-byte)。
  • "\v"ASCII VT 字元 0x0B,垂直定位鍵(vertical tab)。

參數

字串 (string)

將被去除空白的字串

字元 (characters)
您也可以選擇使用 characters 參數來指定要移除的字元。只需列出所有需要移除的字元即可。使用 .. 可以指定一個遞增的字元範圍。

回傳值

已去除空白的字串。

範例

範例 #1 trim() 的使用範例

<?php

$text
= "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);

print
"\n";

$trimmed = trim($text);
var_dump($trimmed);

$trimmed = trim($text, " \t.");
var_dump($trimmed);

$trimmed = trim($hello, "Hdle");
var_dump($trimmed);

$trimmed = trim($hello, 'HdWr');
var_dump($trimmed);

// 去除 $binary 字串頭尾的 ASCII 控制字元
// (從 0 到 31,包含 0 和 31)
$clean = trim($binary, "\x00..\x1F");
var_dump($clean);

?>

以上範例會輸出

string(32) "        These are a few words :) ...  "
string(16) "    Example string
"
string(11) "Hello World"

string(28) "These are a few words :) ..."
string(24) "These are a few words :)"
string(5) "o Wor"
string(9) "ello Worl"
string(14) "Example string"

範例 #2 使用 trim() 去除陣列值的空白

<?php
function trim_value(&$value)
{
$value = trim($value);
}

$fruit = array('apple','banana ', ' cranberry ');
var_dump($fruit);

array_walk($fruit, 'trim_value');
var_dump($fruit);

?>

以上範例會輸出

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(7) "banana "
  [2]=>
  string(11) " cranberry "
}
array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(9) "cranberry"
}

注意事項

注意可能的陷阱:移除中間字元

因為 trim() 會從字串的開頭和結尾移除字元,當字元從中間被移除(或未被移除)時,可能會造成混淆。 trim('abc', 'bad') 會移除 'a' 和 'b',因為它先移除 'a',導致 'b' 移到開頭也被移除。這就是為什麼它會「有效」,而 trim('abc', 'b') 似乎無效的原因。

另請參閱

  • ltrim() - 從字串開頭移除空白字元(或其他字元)
  • rtrim() - 從字串結尾移除空白字元(或其他字元)
  • str_replace() - 將所有搜尋字串的出現處替換成取代字串
新增注意事項

使用者提供的注意事項 2 則注意事項

pcoates at yukon1000 dot com
1 年前
請注意 PHP 8 中的行為變更

您以前可以這樣寫
$p1 = trim($_POST['p1']);
如果參數 p1 未設定,現在會拋出棄用警告。建議改寫成
$p1 = trim($_POST['p1']??'');

$p1 = isset($_POST['p1']) ? trim($_POST['p1']) : null;

$p1 = isset($_POST['p1']) ? trim($_POST['p1']) : '';
gwyneth dot llewelyn at gwynethllewelyn dot net
1 年前
請注意,trim() 無法辨識代表空白的 Unicode 字元(例如,在通用標點符號區塊中),當然,此頁面提到的字元除外。

在撰寫本文時(2023 年 7 月),PHP 中沒有 Unicode 專用的 trim 函式,但您可以嘗試一些使用多位元組字串的 trim 範例,這些範例發佈在 mbstring 擴充套件的註解中:https://php.dev.org.tw/manual/en/ref.mbstring.php
To Top