Александр Токмаков, лучше. Он, как минимум, выполняет замены так, как это задумано. Чтобы выполнял ваш, ключи в $array должны содержать квадратные скобки - иначе они останутся в строке после замен. А зачем ob_start/get_contents/clean я не понял - в strtr вы можете сразу $message передать.
Александр Токмаков, наверное, вы хотели сказать "в ранних". Замените стрелочную функцию обычной, null coalescing поменяйте на isset или array_key_exists:
Вопрос оформлен отвратительно. И разумеется, с нарушением правил (3.1, 3.2, 3.4, 3.8).
Уберите лишние тэги.
Сделайте более осмысленный заголовок, который хоть как-то будет отражать суть ваших затруднений.
Уберите из текста всё, что не несёт информации о вашей проблеме - приветствие, рассказы о том что вам интересно, Будду, и прочий мусор.
Оберните код в тэг code.
Нет, гадать по представленным огрызкам кода какие ещё могут быть косяки - занятие малоперспективное. Воспроизведите свою ситуацию в песочнице, ссылку сюда.
UPD. Хотя нет, догадаться можно - тех огрызков, что вы показали, достаточно. Дополнил ответ.