Chop: примеры (PHP)
chop(string $string, string $characters = " \t\n\r\0\x0B"): stringФункция 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
- 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 8.0, функция chop не претерпела значительных изменений в поведении. Она остается алиасом rtrim. Важным аспектом является то, что функция не устарела и не помечена как deprecated, но в документации и сообществе рекомендуется использовать rtrim для улучшения читаемости кода.
Поведение с параметром $characters остается стабильным на протяжении многих версий.
Обработка строк, считанных из файла или консоли, где часто встречаются символы перевода строки:
$lines = file('data.txt');
foreach ($lines as $line) {
$cleanLine = chop($line);
// Далее обработка $cleanLine
echo $cleanLine . "\n";
}Удаление нескольких разных типов символов при подготовке строки для системы, чувствительной к форматированию:
$input = "Значение: 123\t\n\r";
$clean = chop($input, " \t\n\r");
echo "['" . $clean . "']";['Значение: 123']
Использование в цепочке строковых функций для комплексной очистки:
$dirtyText = " \tВажный текст!!!??\n\n";
$cleanText = trim(chop($dirtyText, '!?'));
echo $cleanText;Важный текст
Обработка данных формы, где пользователь мог случайно добавить пробелы:
$username = $_POST['username'] ?? '';
$username = chop($username);
// Сохранение в БД или сравнениеСоздание собственной безопасной версии для UTF-8 с помощью preg_replace:
function mb_rtrim($string, $chars = "\\s") {
return preg_replace("/[" . $chars . "]+$/u", "", $string);
}
$str = "Тест ééé";
echo mb_rtrim($str, 'é');Тест
Удаление числовых символов с конца строки:
$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 нет прямого аналога с параметром набора символов для удаления, эта задача решается другими средствами.