Pla*_*ton 20 php unicode emoji
我使用这个表情符号表并尝试以下代码:
<?php print json_decode('"\u2600"'); // This convert to ? (black sun with rays) ?>
Run Code Online (Sandbox Code Playgroud)
如果我尝试转换这个\ u1F600(咧嘴笑脸)json_decode
,我会看到这个符号 - ?0
.
怎么了?如何获得正确的表情符号?
Tin*_*sen 38
PHP 5
JSON \u
一次只能处理一个UTF-16代码单元,因此您需要编写代理对.对于U+1F600
这个\uD83D\uDE00
,哪个有效:
echo json_decode('"\uD83D\uDE00"');
Run Code Online (Sandbox Code Playgroud)
PHP 7
您现在不再需要使用json_decode
,只需使用\u
和unicode文字:
echo "\u{1F30F}";
Run Code Online (Sandbox Code Playgroud)
除了Tino的答案之外,我想添加代码将十六进制代码转换0x1F63C
为PHP5中的unicode符号,并将其拆分为代理对:
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) . '"');
}
}
Run Code Online (Sandbox Code Playgroud)
echo codeToSymbol(0x1F63C);
输出
归档时间: |
|
查看次数: |
29364 次 |
最近记录: |