如何在 php 中分解 unicode 表情符号

How to explode unicode Emojis in php

我正在为网站使用 cometchat。 现在我正在开发 React api,为此他们不提供任何支持,所以我需要为 IOS 和 Android 聊天应用程序创建表情符号 api。 在数据库中,我们将表情符号存储为 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 应用程序的字符串 return 中。 我无法从该字符串中解析笑脸。 下面是字符串示例。

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

如您所见,在 string1、string2 中有两个微笑,一个带有 space 分隔符,另一个没有 space 分隔符。 而在 string3 中,它也只包含两个微笑 ("\ud83d\udd04","\ud83d\udd3c").

你们能帮我解析笑脸或 Unicode 字符串并分解消息和字符串中的微笑吗?

我想解析这些微笑以将其与上述数组 $symbols 进行比较,并且根据键,我只需要显示该数组中的图像。

提前致谢。

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

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