Как удалить последние 3 символа из строки в PHP?
Использование substr() с отрицательной длиной
Самый простой и популярный способ удалить последние 3 символа из строки в PHP — использовать функцию substr() с отрицательным значением третьего параметра. Это работает, потому что отрицательная длина указывает, сколько символов нужно пропустить с конца строки.
<?php
$string = "HelloWorld123";
$result = substr($string, 0, -3);
echo $result; // Выводит: HelloWorld
?>
Разберём параметры:
0— начальная позиция (с начала строки)-3— длина, которая означает «взять все символы, кроме последних 3»
Обработка коротких строк
Если строка короче 3 символов, substr() вернёт false (в старых версиях PHP) или пустую строку (в PHP 8+). Чтобы избежать ошибок, используйте проверку длины:
<?php
function removeLastChars(string $str, int $count): string {
if (strlen($str) < $count) {
return ''; // или выбросьте исключение
}
return substr($str, 0, -$count);
}
echo removeLastChars("Hi", 3); // Выводит: (пустая строка)
echo removeLastChars("Hello", 3); // Выводит: He
?>
Удаление произвольного количества символов
Можно сделать универсальную функцию, которая удаляет последние N символов:
<?php
function removeTrailingChars(string $string, int $numChars = 3): string {
if ($numChars <= 0) {
return $string;
}
$length = strlen($string);
if ($length < $numChars) {
return ''; // или $string, если хотите вернуть исходную строку
}
return substr($string, 0, $length - $numChars);
}
echo removeTrailingChars("HelloWorld123", 3); // HelloWorld
echo removeTrailingChars("abc", 5); // (пустая строка)
echo removeTrailingChars("PHP", 0); // PHP
?>
Альтернатива с mb_substr() для многобайтовых кодировок
Если вы работаете с UTF-8 или другими многобайтовыми кодировками, используйте mb_substr():
<?php
$utfString = "ПриветМир!";
$result = mb_substr($utfString, 0, -3, 'UTF-8');
echo $result; // Выводит: ПриветМи
?>
Что не стоит использовать
rtrim()— удаляет только определённые символы (по умолчанию пробелы), а не любое количество символов.str_replace()— не подходит, так как удаляет подстроку в любом месте, а не только в конце.
Вывод: substr($string, 0, -3) — это стандартное решение. Для надёжности всегда проверяйте длину строки перед удалением символов.
Использование substr_replace() для удаления с конца
Другой способ — функция substr_replace(), которая заменяет часть строки. Если передать пустую строку в качестве замены, она удалит указанный диапазон символов:
<?php
$string = "HelloWorld123";
$result = substr_replace($string, '', -3);
echo $result; // Выводит: HelloWorld
?>
Параметры:
$string— исходная строка''— пустая строка (замена)-3— начальная позиция (3 символа с конца)
Преимущество этого метода в том, что он интуитивно понятен: «заменить последние 3 символа на ничего». Однако он тоже требует проверки длины строки для коротких строк.
Когда это полезно
Этот подход удобен, если вы хотите не просто удалить символы, но и заменить их на что-то другое. Например, заменить последние 3 символа на многоточие:
<?php
$string = "HelloWorld123";
$result = substr_replace($string, '...', -3);
echo $result; // Выводит: HelloWorld...
?>
Для простого удаления substr() более распространён, но substr_replace() даёт больше гибкости.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги
Топ ошибок начинающих PHP разработчиков: как их избежать
Dependency Injection в Rust: Полное руководство для разработчиков