(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 — NUL-байт.
"\v": ASCII-символ VT
с кодом 0x0B — символ вертикальной табуляции.
stringcharacterscharacters принимает символы, которые удалит функция.
В аргументе перечисляют символы, которые требуется удалить.
Возрастающий диапазон символов указывают конструкцией .. — две точки.
Функция возвращает обрезанную строку.
Пример #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);
// Удаляем управляющие ASCII-символы в начале и конце строки $binary
// (от кодовой точки 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() иногда сбивает с толку, поскольку функция удаляет символы в начале и конце строки (string ), и поэтому непонятно, когда функция удаляет, а когда не удаляет символы. Вызов
trim('abc', 'bad')удалит как символ «a», так и символ «b», потому что удаление символа «a» сдвинет символ «b» в начало строки, который функция также обрежет. Вот почему это «работает», а вызовtrim('abc', 'b')нет.
note there is a behaviour change 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 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