Смайлы не заходят в базу. Как исправить или убрать из текста?

Суть в вопросе. Вот смайлы.

cfa291f79a3242dcb55f3975ff906a9a.PNG

Пробовал через регулярки, получается только если смайлы по одному вылавливать и добавлять в регалярку, но это не вариант.

Кодировку строки в БД менял на utf8mb4, не помогло.

Помогите решить проблему, стою на месте из-за этих смайликов.
  • Вопрос задан
  • 1091 просмотр
Решения вопроса 1
@LanDer931 Автор вопроса
Нашел решение
function unichr($i) {
    return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}
$result = preg_replace('/['.Validation::unichr(0x1F300).'-'.Validation::unichr(0x1F64F).Validation::unichr(0xE000).'-'.Validation::unichr(0xF8FF) .']/u',' ',$text);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
turintomsk
@turintomsk
developer
Для того, что бы сохранить в БД, необходимо указать кодировку поля utf8mb4 и указать тип общения с БД не utf8, а именно utf8mb4.
Иначе, на просторах интернета есть решения вида:
preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $text)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы