W3docs

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); для их удаления необходимо явно указать их в маске.

Удаление конечных пробелов

Наиболее распространённое применение — очистка конечных пробелов, табуляций и переносов строк, например после чтения строки из файла или обработки данных формы.

php— editable, runs on the server

Символ | показывает, где теперь заканчивается строка, — видно, что конечные пробелы удалены:

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() для обоих концов.

Практика

Практика
В чём заключается функциональность функции rtrim() в PHP?
В чём заключается функциональность функции rtrim() в PHP?
Was this page helpful?