私はこれを使用します 絵文字の表 このコードを試してください:
<?php print json_decode('"\u2600"'); // This convert to ☀ (black Sun with rays) ?>
これを変換しようとすると \ u1F6 (笑顔)からjson_decode
、この記号が表示されます— ὠ0
。
どうしましたか?絵文字を正しく取得するには?
PHP 5
JSONの\u
は一度に1つのUTF-16コードユニットしか処理できないため、代わりにサロゲートペアを記述する必要があります。 U+1F600
の場合、これは\uD83D\uDE00
で、動作します:
echo json_decode('"\uD83D\uDE00"');
????
PHP 7
これでjson_decode
を使用する必要がなくなり、\u
とunicodeリテラルのみを使用できます。
echo "\u{1F30F}";
????
Tinoの答えに加えて、0x1F63C
のような16進コードを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) . '"');
}
}
echo codeToSymbol(0x1F63C);
出力????