Как удалить последний символ в строке
Короткий ответ
Функция 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)