PHP表情符号到unicode不能正确转换多个表情符号
此函数用于将表情符号转换为unicodePHP表情符号到unicode不能正确转换多个表情符号,php,function,unicode,emoji,bin2hex,Php,Function,Unicode,Emoji,Bin2hex,此函数用于将表情符号转换为unicode function emoji_to_unicode($emoji) { $emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8'); $unicode = strtoupper(preg_replace("/^[0]+/","U+",bin2hex($emoji))); return $unicode; } 用法 $var=(“函数emoji\u to\u unicode($emoj
function emoji_to_unicode($emoji) {
$emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8');
$unicode = strtoupper(preg_replace("/^[0]+/","U+",bin2hex($emoji)));
return $unicode;
}
用法
$var=(“函数emoji\u to\u unicode($emoji){
$emoji=mb_convert_编码($emoji,'UTF-32','UTF-8');
$unicode=strtoupper(preg_replace(“/0{3}1/”,“U+1”,bin2hex($emoji));
返回$unicode;
}
$var=(“一种方法是迭代$var
中的每个字符,边走边转换。请注意,为了使函数更健壮,您应该只替换3个前导零(以免弄乱例如以4开头的值)。这样函数将处理所有字符。我还添加了一个检查(使用mb_ord
)字符需要转换,以便它也可以与纯文本一起使用:
函数emoji到unicode($emoji){
如果(mb_ord($emoji)<256)返回$emoji;
$emoji=mb_convert_编码($emoji,'UTF-32','UTF-8');
$unicode=strtoupper(preg_replace(“/^[0]{3}/”,“U+”,bin2hex($emoji));
返回$unicode;
}
$var=("这就是函数的作用:转换一个表情符号。它显然就是这样写的。如果你需要一个用于多个表情符号的函数,你应该重写你的代码。如果我也有带表情符号的文本,怎么避免转换文本?如果我也有带表情符号的文本,怎么避免转换文本?我知道了,但文本也会以十六进制形式返回想保留表情符号,但以纯文本字符串的形式返回文本我不知道,可能带有preg_replace_callback
或mb_ord
的东西会以unicode格式返回表情符号,并以纯文本的形式保留文本,如果您找到解决方案,请更新。@Otávioberre查看我的编辑。这应该可以满足您的要求。很抱歉,响应速度太慢se,这里已经是夜间了……感谢您的解决方案,它接近机器级编程,我们使复杂的外观变得如此简单,非常感谢。