Как взорвать эмодзи Unicode в стеке переполнения

Я использую кометы для веб-сайта.
И сейчас я разрабатываю реагирующий API, и для этого они не предоставляют никакой поддержки, поэтому мне нужно создать Emoji API для приложений IOS и Android Chat.
В БД мы храним эмодзи как тэг IMG.
Мы подготовили массив, как показано ниже

$symbols = array(
':n100:' => '\ud83d\udcaf',
':n1234:' => '\ud83d\udd22',
':a:' => '\ud83c\udd70',
':ab:' => '\ud83c\udd8e',
':abc:' => '\ud83d\udd24',
':abcd:' => '\ud83d\udd21',
':accept:' => '\ud83c\ude51',
':aquarius:' => '\u2652',
':aries:' => '\u2648',
);
$smiley = array(
':n100:': 'n100.png',
':n1234:':'n1234.png', ....
);

Теперь основная проблема заключается в возвращении строки приложениями IOS и Android.
Я не мог разобрать смайлик из этой строки.
Ниже приведены примеры строк.

Str1: "Lorem Ipsum \u23eb \u23ec"Str2: "lorem \u23ec\u23eb Ipsum"Str3: "\ud83d\udd04\ud83d\udd3c"

Как вы можете видеть, в string1, string2 есть два смайла, один с разделителем пробела и другой без разделителя пробела.
А в строке 3 он также содержит только две улыбки («\ ud83d \ udd04», «\ ud83d \ udd3c»).

Не могли бы вы, ребята, помочь мне разобрать строку смайлика или Юникода и разобрать сообщение, а также смайлики из строки?

Я хочу проанализировать эти смайлы, чтобы сравнить их с вышеупомянутыми символами $ массивов и, основываясь на ключе, мне нужно отображать изображения только из этого массива.

Заранее спасибо.

-3

Решение

JSON \ u может обрабатывать только одну кодовую единицу UTF-16 за раз, поэтому вместо этого вам нужно написать суррогатную пару. Для U + 1F600 это \ uD83D \ uDE00, которое работает:

echo json_decode('"\uD83D\uDE00"');
��
0

Другие решения

Других решений пока нет …