Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP表情符号到unicode不能正确转换多个表情符号_Php_Function_Unicode_Emoji_Bin2hex - Fatal编程技术网

PHP表情符号到unicode不能正确转换多个表情符号

PHP表情符号到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

此函数用于将表情符号转换为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($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,这里已经是夜间了……感谢您的解决方案,它接近机器级编程,我们使复杂的外观变得如此简单,非常感谢。