rtrim()
Статья о функции PHP rtrim(), которая удаляет пробелы или другие символы с правого конца строки.
Функция PHP rtrim() удаляет пробельные символы — или любые другие указанные вами символы — с правого конца строки. («r» означает right, то есть правый.) Функция возвращает новую обрезанную строку, не изменяя исходную, поскольку строки в PHP передаются по значению.
На этой странице рассмотрены синтаксис, символы, удаляемые по умолчанию, способы указания пользовательской маски символов (включая диапазоны), а также ситуации, когда rtrim() подходит лучше, чем её аналоги ltrim() и trim().
Синтаксис
rtrim(string $string, string $characters = " \n\r\t\v\x00"): string| Параметр | Обязателен | Описание |
|---|---|---|
$string | Да | Входная строка для обрезки. |
$characters | Нет | Список символов, которые нужно удалить с конца. Если не указан, используется стандартный набор пробельных символов. |
Возвращаемое значение: обрезанная строка. Функция никогда не изменяет $string на месте.
Символы, удаляемые по умолчанию
При вызове rtrim() только с одним аргументом удаляются следующие конечные символы:
| Символ | Значение |
|---|---|
" " (0x20) | Обычный пробел |
"\t" (0x09) | Табуляция |
"\n" (0x0A) | Перевод строки (новая строка) |
"\r" (0x0D) | Возврат каретки |
"\0" (0x00) | Нулевой байт (NUL) |
"\v" (0x0B) | Вертикальная табуляция |
Обратите внимание, что этот набор по умолчанию не включает другие Unicode-пробелы, например неразрывный пробел (\xA0); для их удаления необходимо явно указать их в маске.
Удаление конечных пробелов
Наиболее распространённое применение — очистка конечных пробелов, табуляций и переносов строк, например после чтения строки из файла или обработки данных формы.
Символ | показывает, где теперь заканчивается строка, — видно, что конечные пробелы удалены:
Hello World!|Переносы строк и табуляции обрабатываются аналогично:
<?php
$line = "value\t\r\n";
echo rtrim($line) . '|'; // value|
?>Удаление определённых символов с помощью маски
Передайте второй аргумент, чтобы удалить пользовательский набор символов вместо пробельных. Каждый символ из маски удаляется с конца строки многократно, пока не встретится символ, не входящий в маску.
<?php
echo rtrim('Hello World...', '.') . "\n"; // Hello World
echo rtrim('/path/to/dir///', '/') . "\n"; // /path/to/dir
echo rtrim('cleanup.txt.bak', '.bak') . "\n"; // cleanup.txt — strips any of '.', 'b', 'a', 'k'
?>Третья строка — распространённая ловушка: маска представляет собой набор одиночных символов, а не подстроку. '.bak' означает «удалять любой из символов ., b, a, k», поэтому удаление продолжается, пока не встретится t в txt. Если нужно удалить буквальный суффикс, используйте str_replace() или substr().
Диапазоны символов
Непрерывный диапазон можно задать с помощью .. между двумя символами — это удобно для удаления всех конечных цифр или букв:
<?php
echo rtrim('item42', '0..9') . "\n"; // item — strips trailing digits 0-9
?>rtrim() vs ltrim() vs trim()
Эти три функции имеют одинаковую сигнатуру и правила маски символов; они отличаются только тем, с какой стороны строки действуют:
| Функция | Обрезает |
|---|---|
ltrim() | Только слева (начало) |
rtrim() | Только справа (конец) |
trim() | С обоих концов |
Используйте rtrim() именно тогда, когда ведущие пробелы значимы, а конечные — нет, например при сохранении отступов с удалением артефактов конца строки.
Итог
rtrim()удаляет пробелы (или пользовательский набор символов) с конца строки и возвращает результат.- Без второго аргумента удаляются пробел, табуляция, перевод строки, возврат каретки, NUL и вертикальная табуляция.
- Необязательная маска — это набор символов, а не суффикс; для удаления буквального окончания используйте
str_replace(). - Используйте
ltrim()для начала строки иtrim()для обоих концов.