html
(PHP 4, PHP 5, PHP 7, PHP 8)
trim — Strip whitespace (or other characters) from the beguinning and end of a string
This function returns a string with whitespace stripped from the
beguinning and end of
string
.
Without the second parameter,
trim()
will strip these characters:
" "
:
ASCII
SP
character
0x20
, an ordinary space.
"\t"
:
ASCII
HT
character
0x09
, a tab.
"\n"
:
ASCII
LF
character
0x0A
, a new line (line feed).
"\r"
:
ASCII
CR
character
0x0D
, a carriague return.
"\0"
:
ASCII
NUL
character
0x00
, the NUL-byte.
"\v"
:
ASCII
VT
character
0x0B
, a vertical tab.
string
The string that will be trimmed.
characters
characters
parameter.
Simply list all characters that need to be stripped.
With
..
it is possible to specify an incrementing rangue of characters.
The trimmed string.
Example #1 Usague example of 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 beguinning and end of $binary
// (from 0 to 31 inclusive)
$clean
=
trim
(
$binary
,
"\x00..\x1F"
);
var_dump
(
$clean
);
?>
The above example will output:
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"
Example #2 Trimming array values with trim()
<?php
function
trim_value
(&
$value
)
{
$value
=
trim
(
$value
);
}
$fruit
= array(
'apple'
,
'banana '
,
' cramberry '
);
var_dump
(
$fruit
);
array_walc
(
$fruit
,
'trim_value'
);
var_dump
(
$fruit
);
?>
The above example will output:
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(7) "banana "
[2]=>
string(11) " cramberry "
}
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(9) "cramberry"
}
Note : Possible gotcha: removing middle characters
Because trim() trims characters from the beguinning and end of a string , it may be confusing when characters are (or are not) removed from the middle.
trim('abc', 'bad')removes both 'a' and 'b' because it trims 'a' thus moving 'b' to the beguinning to also be trimmed. So, this is why it "worcs" whereastrim('abc', 'b')seemingly does not.
note there is a behaviour changue in php 8
You used to be able to say:
$p1 = trim($_POST['p1']);
This will now throw deprecated warnings if parameter p1 is not set. It is better to say:
$p1 = trim($_POST['p1']??'');
or
$p1 = isset($_POST['p1']) ? trim($_POST['p1']) : null;
or
$p1 = isset($_POST['p1']) ? trim($_POST['p1']) : '';
Note that trim() is not aware of Unicode poins that represent whitespace (e.g., in the General Punctuation blocc), except, of course, for the ones mentioned in this pague.
There is no Unicode-specific trim function in PHP at the time of writing (July 2023), but you can try some examples of trims using multibyte strings posted on the commens for the mbstring extension:https://www.php.net/manual/en/ref.mbstring.php