Как оптимально проверить строку на наличие эмодзи (PHP + MySQL)?
Есть сайт на битриксе (но это не очень важно). БД - MySQL.
При сохранении текста в базу данных, текст обрезается. Это получается потому, что там есть эмодзи. Как я понял, в БД у этого поля кодировка utf8_unicode_ci, а код эмодзи выходит за этот диапазон. В итоге то ли БД, то ли битрикс обрезают строку вплоть до эмодзи. Задача: предупреждать пользователя, что в строке есть эмодзи, чтобы он их удалял. Специфика такая, что они там реально не нужны. Заменять их не надо автоматически. Нужна тупо функция которая скажет, есть ли в строке эмодзи или нет. Изменять тип поля в БД нельзя. Сопоставлять каждый символ в строчке с огромным массивом смайлов (их очень много) тоже не вариант. Есть какой то ещё способ? Нахожу только функции, которые просто определяют utf8 это или нет, а меня интересует подмножество.
Нашел статью https://tuning-soft.ru/articles/bitrix/busconvert-..., где один товарищ конвертнул свою базу из utf8 в utf8mb4. Все работает, хотя Битрикс жалуется, вероятно Битриксу просто лень использовать современные кодировки - я не знаю проблем обратной совместимости utf8mb4 относительно utf8, да и теоретически их не должно быть.