utf 8 — Convert & amp; # 55357; & Амп; # 56911; Emoji в HTML с помощью переполнения стека

У нас есть несколько суррогатных пар (или 2-байтовых utf8?) Символов, таких как �� это смайлики для молитвенных рук, хранящиеся как UTF8 как 2 символа. При отображении в браузере эта строка отображается как два

пример: ��

Мне нужно преобразовать их в руки emjoi, используя php, но я просто не могу найти комбинацию iconv, utf8_decode, html_entity_decode и т. Д.

Этот сайт преобразует �� должным образом:

http://www.convertstring.com/EncodeDecode/HtmlDecode

Вставьте туда следующую строку

Please join me in this prayer. ��❤️

Вы заметите суррагатную пару �� (��) преобразуется в ��

Этот сайт утверждает, что использует HTMLDecode, но я не могу найти что-либо внутри php, чтобы осуществить это. Я пытался:
Iconv
html_entity_decode
и несколько публичных библиотек.

Я признаю, что я не эксперт, когда дело доходит до преобразования персонажей вокруг!

6

Решение

Я не смог найти функцию для этого, но это работает:

$str = "Please join me in this prayer. ��❤️";
$newStr = preg_replace_callback("/&#.....;&#.....;/", function($matches){return convertToEmoji($matches);}, $str);
print_r($newStr);
function convertToEmoji($matches){
$newStr = $matches[0];
$newStr = str_replace("&#", '', $newStr);
$newStr = str_replace(";", '##', $newStr);
$myEmoji = explode("##", $newStr);
$newStr = dechex($myEmoji[0]) . dechex($myEmoji[1]);
$newStr = hex2bin($newStr);
return iconv("UTF-16BE", "UTF-8", $newStr);
}
2

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

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

По вопросам рекламы [email protected]