Выбрать шрифт с одинаковой шириной цифр (хоть calibri, да и вообще их много на любой вкус), или обернуть каждую цифру в inline-block с шириной самой широкой цифры (1ch) выравниванием текста по центру.
Значение будет установлено до конца выполнения скрипта (а не функции), так что нужно вернуть настройки самому. Этому может помочь то, что ini_set возвращает старое значение настройки (или false).
А вообще это все написано в документации
Может проще в сообщение добавить признак того, что оно "в тройке последних"? Ну или в табличке рядом хранить идентификаторы чатов и последних сообщений? И при добавлении нового сообщения обновлять данные? Тогда запрос упрощается до безобразия + учитывая, что обновление намного реже вставки - с производительностью всё будет намнооого лучше.
Какая-то лажа при использовании диапазона заглавных букв А-Я в списке символов. Если его не указывать (а его и не надо указывать - ведь указан флаг i), то всё работает.
можно чуть короче: "" + число + строка. Или СтрШаблон("%1 %2", Число, Строка). Да и вообще в БСП есть несколько методов в модуле СтроковыеФункцииКлиентСервер, которые реализуют пародию на шаблонные строки и они несколько удобнее, когда потом придется менять вывод.
Пропихнуть на клиента обновление через pusher или свое решение на базе вебсокета на стороне клиента и post на стороне сервера. Сами пермишены запрашивать не только при логине, но и при загрузке страницы и при ошибке выполнения действия по причине нарушения прав.