我们有一堆代理项对(或者2字节的utf8?)以2个字符的形式存储为UTF8的字符,如祈祷之手表情符号��
。在浏览器中呈现时,此字符串呈现为两个??
示例:��
我需要使用php将它们转换为hands,但我就是找不到iconv,utf8_decode,html_entity_decode等的组合来完成它。
此站点可正确转换��
:
http://www.convertstring.com/EncodeDecode/HtmlDecode
将以下字符串粘贴到其中
Please join me in this prayer. ��❤️
您会注意到,代理项对��(��
)转换为
这个网站声称使用HTMLDecode,但我在php中找不到任何东西来实现这一点。我尝试过: iconv html_entity_decode和一些公共图书馆。
我承认我不是转换字符编码的专家!
发布于 2017-11-09 06:29:05
我找不到一个函数来做这件事,但这是可行的:
$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);
}
https://stackoverflow.com/questions/47187165
复制相似问题