convert emoji to their hex code convert emoji to their hex code php php

convert emoji to their hex code


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

// Strips leading zeros// And returns str in UPPERCASE letters with a U+ prefixfunction 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


Simple function, inspired by @d3L answer above

function emoji_to_unicode($emoji) {   $emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8');   $unicode = strtoupper(preg_replace("/^[0]+/","U+",bin2hex($emoji)));   return $unicode;}

Exmaple

emoji_to_unicode("💵");//returns U+1F4B5


You can do like this, consider the emoji 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);