xxxxxxxxxx
$string = "a😂b😭😭c❤❤❤";
echo strlen($string)."<br>"; // Raw length
$regexEmoticons = '/[\x{1F600}-\x{1F64F}\x{1F300}-\x{1F5FF}\x{1F680}-\x{1F6FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}]/u';
$res = preg_replace_callback($regexEmoticons, function ($matches) {
$utf8 = mb_convert_encoding($matches[0], 'UTF-32', 'UTF-8');
return "&#".hexdec(bin2hex($utf8)).';';
}, $string);
echo strlen($string)."<br>"; // Converted length
echo var_dump($res);