为了账号安全,请及时绑定邮箱和手机立即绑定

PHP emoji to unicode 没有适当地转换一个以上的 emoji

PHP emoji to unicode 没有适当地转换一个以上的 emoji

PHP
慕虎7371278 2021-11-19 16:12:21
此函数将表情符号转换为 unicodefunction emoji_to_unicode($emoji) {   $emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8');   $unicode = strtoupper(preg_replace("/^[0]+/","U+",bin2hex($emoji)));   return $unicode;}用法$var = ("😀");echo  emoji_to_unicode($var);所以它返回给我U+1F600的问题是,如果我在$var上面添加更多表情符号只会返回第一个表情符号,返回示例如下:$var = ("😀😀");echo  emoji_to_unicode($var);U+1F6000001F600当它应该返回时返回给我 U+1F600 U+1F600转换单个表情符号时效果很好,但转换多个表情符号时不起作用
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

一种方法是迭代 中的每个字符,随时$var转换。请注意,为了使函数更健壮,您应该只替换 3 个前导零(以免混淆以 4 开头的值)。这样,该函数将适用于所有字符。我还添加了一个检查(使用mb_ord)该字符需要转换,以便它也适用于纯文本:


function emoji_to_unicode($emoji) {

    if (mb_ord($emoji) < 256) return $emoji;

    $emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8');

    $unicode = strtoupper(preg_replace("/^[0]{3}/","U+",bin2hex($emoji)));

    return $unicode;

}



$var = ("😀x😀hello");

$out = '';

for ($i = 0; $i < mb_strlen($var); $i++) {

    $out .= emoji_to_unicode(mb_substr($var, $i, 1));

}

echo "$out\n";

输出:


U+1F600xU+1F600hello


查看完整回答
反对 回复 2021-11-19
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

function emoji_to_unicode($emoji) {

   $emoji = mb_convert_encoding($emoji, 'UTF-32', 'UTF-8');

   $unicode = strtoupper(preg_replace("/0{3}1/"," U+1",bin2hex($emoji)));

  return $unicode;

}


$var = ("😀😀");

echo  emoji_to_unicode($var); // U+1F600 U+1F600


$var = ("😀😀😀");

echo  emoji_to_unicode($var); // U+1F600 U+1F600 U+1F600


查看完整回答
反对 回复 2021-11-19
  • 2 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信