PHP: Hypertext Preprocessor (original) (raw)
trim
(PHP 4, PHP 5, PHP 7, PHP 8)
trim — Strip whitespace (or other characters) from the beginning and end of a string
Description
This function returns a string with whitespace stripped from the beginning and end of string
. Without the second parameter,trim() will strip these characters:
" "
: ASCII SP character0x20
, an ordinary space."\t"
: ASCII HT character0x09
, a tab."\n"
: ASCII LF character0x0A
, a new line (line feed)."\r"
: ASCII CR character0x0D
, a carriage return."\0"
: ASCII NUL character0x00
, the NUL-byte."\v"
: ASCII VT character0x0B
, a vertical tab.
Parameters
string
The string that will be trimmed.
characters
Optionally, the stripped characters can also be specified using the characters
parameter. Simply list all characters that need to be stripped. With ..
it is possible to specify an incrementing range of characters.
Return Values
The trimmed string.
Examples
Example #1 Usage example of trim()
`<?php
$text
= "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, binary,binary, binary,hello);
"\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(clean = trim(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) { <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>v</mi><mi>a</mi><mi>l</mi><mi>u</mi><mi>e</mi><mo>=</mo><mi>t</mi><mi>r</mi><mi>i</mi><mi>m</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">value = trim(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">u</span><span class="mord mathnormal">e</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">im</span><span class="mopen">(</span></span></span></span>value); }$fruit = array('apple','banana ', ' cranberry '); var_dump($fruit);array_walk($fruit, 'trim_value'); var_dump($fruit);?>
The above example will output:
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" }
Notes
Note: Possible gotcha: removing middle characters
Because trim() trims characters from the beginning 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 beginning to also be trimmed. So, this is why it "works" whereastrim('abc', 'b')
seemingly does not.
See Also
- ltrim() - Strip whitespace (or other characters) from the beginning of a string
- rtrim() - Strip whitespace (or other characters) from the end of a string
- str_replace() - Replace all occurrences of the search string with the replacement string
Found A Problem?
pcoates at yukon1000 dot com ¶
2 years ago
`note there is a behaviour change in php 8
You used to be able to say: p1=trim(p1 = trim(p1=trim(_POST['p1']);
This will now throw deprecated warnings if parameter p1 is not set. It is better to say: p1=trim(p1 = trim(p1=trim(_POST['p1']??'');
or p1=isset(p1 = isset(p1=isset(_POST['p1']) ? trim($_POST['p1']) : null;
or p1=isset(p1 = isset(p1=isset(_POST['p1']) ? trim($_POST['p1']) : '';
`
gwyneth dot llewelyn at gwynethllewelyn dot net ¶
1 year ago
`Note that trim() is not aware of Unicode points that represent whitespace (e.g., in the General Punctuation block), except, of course, for the ones mentioned in this page.
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 comments for the mbstring extension: https://www.php.net/manual/en/ref.mbstring.php
`