Кодировать верхнюю кодовую точку (> U + FFFF) к объектам HTML

У меня есть строка ввода (URL-кодировка):

% F0% 9F% 98% 8E

который декодируется, является emoji «😎».

Как я могу преобразовать это в HTML-код 😎 ?

http://unicode.online-toolz.com/tools/unicode-html-entities-convertor.php

этот сайт делает именно то, что мне нужно.

Solutions Collecting From Web of "Кодировать верхнюю кодовую точку (> U + FFFF) к объектам HTML"

 <?php function mb_ord($char, $encoding = 'UTF-8') { if ($encoding === 'UCS-4BE') { list(, $ord) = (strlen($char) === 4) ? @unpack('N', $char) : @unpack('n', $char); return $ord; } else { return mb_ord(mb_convert_encoding($char, 'UCS-4BE', $encoding), 'UCS-4BE'); } } function mb_htmlentities($string, $hex = false, $encoding = 'UTF-8') { return preg_replace_callback('/[\x{80}-\x{10FFFF}]/u', function ($match) use ($hex) { return sprintf($hex ? '&#x%X;' : '&#%d;', mb_ord($match[0])); }, $string); } echo mb_htmlentities(urldecode('%F0%9F%98%8E')); 

Это вернет &#128526;

(учтите, что этот ответ основан на модифицированной версии функций, предоставляемых этим ответом здесь .)