如何在PHP中从Unicode转换表情符号?

如何在PHP中从Unicode转换表情符号?,php,unicode,emoji,Php,Unicode,Emoji,我使用此代码并尝试以下代码: <?php print json_decode('"\u2600"'); // This convert to ☀ (black sun with rays) ?> PHP5 JSON的\u一次只能处理一个UTF-16代码单元,因此您需要编写代理项对。对于这是\uD83D\uDE00,它可以工作: echo json_decode('"\uD83D\uDE00"'); In addition to the answer of Tino, I'd lik

我使用此代码并尝试以下代码:

<?php print json_decode('"\u2600"'); // This convert to ☀ (black sun with rays) ?>
PHP5

JSON的
\u
一次只能处理一个UTF-16代码单元,因此您需要编写代理项对。对于这是
\uD83D\uDE00
,它可以工作:

echo json_decode('"\uD83D\uDE00"');
In addition to the answer of Tino, I'd like to add code to convert hexadecimal code like 
0x1F63C
to a unicode symbol in PHP5 with splitting it to a surrogate pair:

function codeToSymbol($em) {
    if($em > 0x10000) {
        $first = (($em - 0x10000) >> 10) + 0xD800;
        $second = (($em - 0x10000) % 0x400) + 0xDC00;
        return json_decode('"' . sprintf("\\u%X\\u%X", $first, $second) . '"');
    } else {
        return json_decode('"' . sprintf("\\u%X", $em) . '"');
    }
}
回声json_解码(“\uD83D\uDE00”);
除了Tino的答案外,我还想添加代码,将十六进制代码(如
0x1F63C
)转换为PHP5中的unicode符号,并将其拆分为代理项对:


echo codeToSymbol(0x1F63C)输出您尝试过字节表示法吗?也许你的浏览器不能显示这个?如果你以正确的编码保存PHP文件,你也可以只写
print('如果你的问题与如何将它们保存在数据库中有关,如果你使用MySQL,你可以将图表集改为
utfbm4
。看看。