如何在php中爆炸unicode Emojis

时间:2017-10-04 11:33:09

标签: php unicode emoji cometchat

我正在网站上使用cometchat。 现在我正在开发react api,为此他们没有提供任何支持,所以我需要为IOS和Android Chat应用程序创建表情符号api。 在DB中,我们将表情符号存储为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有两个微笑,一个带有空格分隔符,另一个没有空格分隔符。 在string3中,它只包含两个微笑(" \ ud83d \ udd04"," \ ud83d \ udd3c")。

你能帮助我解析笑脸或Unicode字符串并爆炸消息以及来自字符串的微笑吗?

我想解析这些微笑,将它与上面提到的数组$符号进行比较,并根据键,我需要只显示该数组中的图像。

提前致谢。

1 个答案:

答案 0 :(得分:0)

JSON的\ u一次只能处理一个UTF-16代码单元,因此您需要编写代理对。对于U + 1F600,这是\ uD83D \ uDE00,有效:

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