Convert emoji to their hex code

I am trying to detect the emoji that I get, for example. POST (no source needed).

As an example, I use this emoji: ✊🏾 (hope this will be visible)

The code for it is U+270A U+1F3FE (I use http://unicode.org/emoji/charts/full-emoji-list.html for the codes)

Now I converted emoji with json_encode and I get: \u270a\ud83c\udffe

Here the only part that is equal is 270a . \ud83c\udffe not equal to U+1F3FE even if I add them together ( 1B83A )

How do I get from ✊🏾 to U+270A U+1F3FE , for example. Php?

+7
php converter emoji
source share
2 answers

Use mb_convert_encoding and convert from UTF-8 to UTF-32 . Then do additional formatting:

 // Strips leading zeros // And returns str in UPPERCASE letters with a U+ prefix function format($str) { $copy = false; $len = strlen($str); $res = ''; for ($i = 0; $i < $len; ++$i) { $ch = $str[$i]; if (!$copy) { if ($ch != '0') { $copy = true; } // Prevent format("0") from returning "" else if (($i + 1) == $len) { $res = '0'; } } if ($copy) { $res .= $ch; } } return 'U+'.strtoupper($res); } function convert_emoji($emoji) { // ✊🏾 --> 0000270a0001f3fe $emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8'); $hex = bin2hex($emoji); // Split the UTF-32 hex representation into chunks $hex_len = strlen($hex) / 8; $chunks = array(); for ($i = 0; $i < $hex_len; ++$i) { $tmp = substr($hex, $i * 8, 8); // Format each chunk $chunks[$i] = format($tmp); } // Convert chunks array back to a string return implode($chunks, ' '); } echo convert_emoji('✊🏾'); // U+270A U+1F3FE 
+4
source share

You can do so, think that emoji is a normal character.

 $emoji = "✊🏾"; $str = str_replace('"', "", json_encode($emoji, JSON_HEX_APOS)); $myInput = $str; $myHexString = str_replace('\\u', '', $myInput); $myBinString = hex2bin($myHexString); print iconv("UTF-16BE", "UTF-8", $myBinString); 
+1
source share

All Articles