如何从JS到PHP正确地获取表情符号unicode?

时间:2017-07-12 20:02:47

标签: javascript php unicode emoji

我的php代码正确生成以下字符串以显示表情符号

$text = <div>test 1<span>&#x1f607</span></div>

我的php代码将此字符串传递给我的js代码,该代码正在接收它并在我的网页编辑器中正确显示表情符号。

在我的js代码中,我可以修改文本,使得返回到php的字符串现在看起来像这样(注意unicode没有被设计更改):

$text = <div>test 2<span>&#x1f607</span></div>

要将字符串传递回php,我正在执行以下操作:

var send_form = $('#send_msg_form').serializeArray();
send_form.push({ name: "msg_text", value: msg_text });

我的php代码正确接收数据,我可以从传入的参数中获取msg_text。

问题是我不再在php中的字符串var中看到unicode。这是一个不稳定的符号,显然是由于JS推送或php收到数据时发生的一些unicode转换。

如果我从php中拉出字符串并将其粘贴到编辑器中,我会看到以下内容,在p之后有3个颠倒的问号:

<div>test 1<span>p</span></div>

关于将unicode从js传递给php,我显然遗漏了一些东西。我不知道下一步该做什么。我目前正在运行php 5.6版。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

似乎你的JS代码将编码的UTF-8微笑传递给php代码。

&#x1f607 - 这是表情符号的代码。

所以我假设(因为缺乏信息)你在PHP端获得了编码字符串。

因此,如果您想显示与代码相关的表情符号,您可以使用函数html_entity_decode对其进行解码:

html_entity_decode('&#x1f607;');

请注意,编码实体必须以“;”结尾符号(我认为JS编辑器必须如此)。