W3docs

chop()

Статья о функции PHP chop(), которая удаляет пробелы или другие символы с конца строки. Функция полезна для

Функция PHP chop() удаляет пробельные символы (или другие указанные символы) с конца (правой стороны) строки и возвращает результат. Начало строки она не затрагивает и никогда не изменяет исходную переменную — возвращается новая строка.

На этой странице рассматриваются синтаксис chop(), какие символы удаляются по умолчанию, как передать пользовательскую маску символов и типичные подводные камни.

chop() — псевдоним rtrim()

Самое важное: chop() — это просто псевдоним rtrim(). Обе функции идентичны по поведению — chop — более старое название (знакомое Perl-разработчикам), тогда как rtrim («правая обрезка») более описательно. В новом коде, как правило, предпочитают rtrim(), однако chop() по-прежнему встречается в существующих кодовых базах.

Если нужно удалить символы с левой стороны, используйте ltrim(); чтобы удалить символы с обеих сторон — trim().

Синтаксис

chop(string $string, string $characters = " \n\r\t\v\0"): string

Функция принимает один или два параметра:

  • $string — строка для обрезки.
  • $characters (необязательный) — набор символов, удаляемых с конца. Если параметр не указан, chop() удаляет стандартные пробельные символы, перечисленные ниже.

Функция возвращает обрезанную строку. Аргумент передаётся по значению, поэтому сама переменная $string остаётся без изменений.

Символы, удаляемые по умолчанию

При вызове chop() с одним аргументом с конца строки удаляются следующие символы:

СимволЗначение
" "обычный пробел
"\t"табуляция
"\n"перевод строки (новая строка)
"\r"возврат каретки
"\0"байт NUL
"\v"вертикальная табуляция

Удаление пробелов в конце строки

Наиболее распространённое применение — очистка завершающих пробелов, табуляций или переносов строки, например после чтения строки из файла:

php— editable, runs on the server

Добавляем |, чтобы граница обрезки была видна. Вывод:

Hello, World!|

Завершающие пробелы удалены, всё, что было до них, остаётся нетронутым.

Использование маски символов

Передайте второй аргумент, чтобы удалить произвольный набор символов вместо пробельных. Каждый символ маски удаляется с конца строки повторно до тех пор, пока не встретится символ, не входящий в маску:

php— editable, runs on the server

Вывод:

Hello, Wor

Маска "ld!" — это набор символов, а не подстрока. Читая справа налево: !, d, l, затем снова d — все они входят в набор и удаляются; r — не входит, поэтому обрезка останавливается.

Диапазоны символов с ..

Внутри маски можно задать диапазон с помощью двух точек. Например, "0..9" означает «любая цифра», поэтому следующий код удалит все цифры в конце:

<?php
echo chop("order100200", "0..9");
?>

Вывод:

order

Типичные подводные камни

  • Обрезаются только края, не середина. chop("a b ") возвращает "a b" — пробелы между a и b сохраняются.
  • Маска — это набор символов, а не буквальный суффикс. chop("Hello, World!", "Hd") вернёт строку без изменений, поскольку последний символ ! не входит в набор H/d, и обрезка не начнётся.
  • Исходная переменная не изменяется. Всегда присваивайте возвращаемое значение или используйте его напрямую: $clean = chop($raw);.

Когда применять

chop() / rtrim() стоит использовать всякий раз, когда завершающие символы могут нарушить сравнение или отображение:

  • Удаление символа новой строки в конце строки, прочитанной с помощью fgets().
  • Очистка пользовательского ввода перед сохранением.
  • Удаление завершающего слеша из пути или URL: rtrim($path, "/").

Для замены символов в любом месте строки (не только на краях) используйте str_replace().

Практика

Практика
Какова функция chop() в PHP?
Какова функция chop() в PHP?
Was this page helpful?