Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как удалить последний символ в строке

Короткий ответ

Функция mb_substr() с отрицательной длиной -1 возвращает строку без последнего символа:

<?php
 
$text = 'Привет!';
 
echo mb_substr($text, 0, -1);

Результат:

Привет

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

Если нужно убрать, например, завершающую запятую, удобнее rtrim(). Она удаляет все указанные символы с конца, а не один:

<?php
 
echo rtrim('a,b,c,,', ',');

Результат:

a,b,c

Почему не substr()

substr() работает с байтами. Кириллическая буква занимает два байта, поэтому функция отрежет только её половину, и в строке останется повреждённый символ:

<?php
 
var_dump(mb_check_encoding(substr('Привет', 0, -1), 'UTF-8'));
var_dump(mb_check_encoding(mb_substr('Привет', 0, -1), 'UTF-8'));

Результат:

bool(false)
bool(true)

Функции из этого ответа

  • mb_substr — Возвращает часть строки.
  • trim — Удаляет пробелы и другие символы с начала и конца строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.