1

Chop: примеры (PHP)

Руководство по функции chop с практическими примерами
Раздел: Работа со строками
chop(string $string, string $characters = " \t\n\r\0\x0B"): string
Функция chop в PHP

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

Использование функции актуально при обработке ввода данных, чтении строк из файлов, очистке значений перед сохранением в базу данных или выводе, когда необходимо убрать нежелательные символы справа.

Синтаксис функции: chop(string $string, string $characters = " \t\n\r\0\x0B"): string

  • $string - обрабатываемая строка. Обязательный аргумент.
  • $characters - необязательный аргумент. Список символов для удаления. Если аргумент не указан, функция удаляет следующие пробельные символы: обычный пробел, табуляция (\t), новая строка (\n), возврат каретки (\r), нулевой байт (\0), вертикальная табуляция (\x0B).

Функция возвращает модифицированную строку.

Короткие примеры использования

Удаление стандартных пробельных символов с конца строки:

$str = "Привет мир   \t\n";
echo chop($str);
Привет мир

Удаление заданных символов с конца строки:

$str = "Пример строки...";
echo chop($str, '.');
Пример строки

Удаление нескольких конкретных символов:

$str = "Текст!!!??";
echo chop($str, '!?');
Текст

Когда удаляемые символы не находятся в конце строки:

$str = "PHP chop";
echo chop($str, 'hop');
PHP c
Похожие функции в PHP
  • rtrim - полный аналог функции chop. Рекомендуется к использованию, так как его название лучше отражает суть операции (trim - обрезать, r - right).
  • ltrim - удаляет пробельные или указанные символы только с начала строки.
  • trim - удаляет символы с обоих концов строки. Используется чаще всего для общей очистки строк от пробелов.

Предпочтение стоит отдавать функции rtrim из-за большей понятности кода. Функции ltrim и trim применяются, когда нужно очистить начало строки или оба конца соответственно.

Типичные ошибки

Ожидание удаления подстроки, а не набора символов. Функция удаляет все вхождения каждого перечисленного симвла, а не подстроку целиком.

$str = "Неправильное удаление end";
// Ожидание: удалить 'end' с конца
// Реальность: удаляет символы 'e', 'n', 'd' по отдельности.
echo chop($str, 'end');
Неправильное удаление

Использование с многобайтовыми строками (например, UTF-8). Функция небезопасна для Unicode, может испортить символ, если обрежет его часть.

$str = "Символ: é";
echo chop($str, 'é'); // Может работать некорректно

В таких случаях рекомендуется использовать mb_rtrim из расширения mbstring или писать собственную реализацию.

Непонимание, что функция возвращает новую строку, а не изменяет исходную.

$str = "Исходная";
chop($str);
echo $str; // Осталась "Исходная"
Изменения в последних версиях PHP

Начиная с PHP 8.0, функция chop не претерпела значительных изменений в поведении. Она остается алиасом rtrim. Важным аспектом является то, что функция не устарела и не помечена как deprecated, но в документации и сообществе рекомендуется использовать rtrim для улучшения читаемости кода.

Поведение с параметром $characters остается стабильным на протяжении многих версий.

Расширенные примеры использования

Обработка строк, считанных из файла или консоли, где часто встречаются символы перевода строки:

Пример php
$lines = file('data.txt');
foreach ($lines as $line) {
    $cleanLine = chop($line);
    // Далее обработка $cleanLine
    echo $cleanLine . "\n";
}

Удаление нескольких разных типов символов при подготовке строки для системы, чувствительной к форматированию:

Пример php
$input = "Значение: 123\t\n\r";
$clean = chop($input, " \t\n\r");
echo "['" . $clean . "']";
['Значение: 123']

Использование в цепочке строковых функций для комплексной очистки:

Пример php
$dirtyText = "  \tВажный текст!!!??\n\n";
$cleanText = trim(chop($dirtyText, '!?'));
echo $cleanText;
Важный текст

Обработка данных формы, где пользователь мог случайно добавить пробелы:

Пример php
$username = $_POST['username'] ?? '';
$username = chop($username);
// Сохранение в БД или сравнение

Создание собственной безопасной версии для UTF-8 с помощью preg_replace:

Пример php
function mb_rtrim($string, $chars = "\\s") {
    return preg_replace("/[" . $chars . "]+$/u", "", $string);
}
$str = "Тест ééé";
echo mb_rtrim($str, 'é');
Тест

Удаление числовых символов с конца строки:

Пример php
$str = "Номер заказа 12345";
echo chop($str, '0123456789');
Номер заказа
Аналоги в других языках программирования

Chop в Python

Метод str.rstrip([chars]). Работает аналогично.

text = "Пример...  "
print(text.rstrip(' .'))
Пример

Chop в Javascript

Метод String.prototype.trimEnd() или String.prototype.trimRight() удаляет пробелы с конца. Для удаления конкретных символов нужна регулярное выражение или самописная функция.

let str = "Text!!";
console.log(str.replace(/!+$/, ''));
Text

Chop в MySQL

Функция RTRIM() удаляет только пробелы с конца строки.

SELECT RTRIM('строка   ');
строка

Основное отличие от PHP - в стандартных библиотеках JavaScript и MySQL нет прямого аналога с параметром набора символов для удаления, эта задача решается другими средствами.

PHP chop function comments

En
Chop Alias of rtrim