Кодировать верхнюю кодовую точку (& gt; U + FFFF) для объектов HTML

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

% F0% 9F% 98% 8E

который расшифровывает эмодзи «��».

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

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

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

3

Решение

<?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;

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector