请注意,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
,一个换行符(换行)。
"\r"
: ASCII CR 字符 0x0D
,一个回车符。
"\0"
: ASCII NUL 字符 0x00
,空字节。
"\v"
: ASCII VT 字符 0x0B
,一个垂直制表符。
string
要修剪的 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);
// trim the ASCII control characters at the beginning and end of $binary
// (from 0 to 31 inclusive)
$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() 去除 string 首尾处的字符,所以当从中间去除(或不去除)字符时可能会令人困惑。
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.net/manual/en/ref.mbstring.php