Search code examples
phpunicodeemoji

How to convert Emoji from Unicode in PHP?


I use this table of Emoji and try this code:

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

If I try to convert this \u1F600 (grinning face) through json_decode, I see this symbol — ὠ0.

Whats wrong? How to get right Emoji?


Solution

  • PHP 5

    JSON's \u can only handle one UTF-16 code unit at a time, so you need to write the surrogate pair instead. For U+1F600 this is \uD83D\uDE00, which works:

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

    PHP 7

    You now no longer need to use json_decode and can just use the \u and the unicode literal:

    echo "\u{1F30F}";
    🌏