Конвертировать & #56911; в Emoji в HTML с помощью PHP
у нас есть куча суррогатной пары (или 2-байтовый utf8?) такие символы, как ��
который является молитва руки emojis хранится как UTF8 как 2 символа. При отображении в браузере эта строка отображается как два ??
пример:
мне нужно преобразовать их в руки emjoi с помощью php, но я просто не могу найти комбинацию iconv, utf8_decode, html_entity_decode и т. д., чтобы снять ее.
этот сайт преобразует ��
правильно:
http://www.convertstring.com/EncodeDecode/HtmlDecode
вставьте туда следующую строку
Please join me in this prayer. ��❤️
Вы заметите, что пара surragate (��
) превращается в
1 ответов
Я не смог найти функцию для этого, но это работает:
$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);
}