請注意 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']) : '';
(PHP 4, PHP 5, PHP 7, PHP 8)
trim — 移除字串頭尾的空白字元(或其他字元)
此函式會傳回一個字串,其中已移除 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')
似乎無效的原因。
請注意 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']) : '';
請注意,trim() 無法辨識代表空白的 Unicode 字元(例如,在通用標點符號區塊中),當然,此頁面提到的字元除外。
在撰寫本文時(2023 年 7 月),PHP 中沒有 Unicode 專用的 trim 函式,但您可以嘗試一些使用多位元組字串的 trim 範例,這些範例發佈在 mbstring 擴充套件的註解中:https://php.dev.org.tw/manual/en/ref.mbstring.php