-3

我正在为网站使用cometchat。现在我正在开发 react api,为此他们没有提供任何支持,所以我需要为 IOS 和 Android 聊天应用程序创建 emoji 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字符串并分解消息以及字符串中的微笑吗?

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

提前致谢。

4

1 回答 1

2

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

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

于 2017-10-04T11:38:52.047 回答