• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 实现emoji遇到的棘手问题,很棘手!

php 搞代码 4年前 (2022-01-25) 28次浏览 已收录 0个评论
文章目录[隐藏]
<code>function str_emoji($dir,$str){  if($dir){    $str=json_encode($str);    $str=preg_replace('#(\\\ud[0-9a-f]{3}|\\\u2(6|7)[0-9a-f]{2})#ie','addslashes("\\1")',$str);    //emoji 5.0后,一个表情由两个字符组成    $str=json_decode($str);  }else{    $str=preg_replace('#(u[0-9a-f]{4}u[0-9a-f]{4})#ie','iconv("UCS-2","UTF-8",pack("H4","\\1"))',$str);    //此正则匹配ue415ue415形式的数据    //不能将二进制转成\xf0\x9f\x98\x83形式的UTF-8  }  return $str;};</code>
<code>//写进数据库$content=str_emoji(true,$content);</code>
<code>//读取数据库$content=str_emoji(false,$content);</code>

下面问题来了。

iconv(“UCS-2″,”UTF-8”,pack(“H4″,”\\1”)) 不能将二进制专程UTF-8,怎么破????
另:数据库版本不能直接存储emoji,升级数据库是肯定不可行的方案。

参考文章:http://blog.mc-zone.me/article/322

本2文来*源gao($daima.com搞@代@#码(网搞gaodaima代码

回复内容:

<code>function str_emoji($dir,$str){  if($dir){    $str=json_encode($str);    $str=preg_replace('#(\\\ud[0-9a-f]{3}|\\\u2(6|7)[0-9a-f]{2})#ie','addslashes("\\1")',$str);    //emoji 5.0后,一个表情由两个字符组成    $str=json_decode($str);  }else{    $str=preg_replace('#(u[0-9a-f]{4}u[0-9a-f]{4})#ie','iconv("UCS-2","UTF-8",pack("H4","\\1"))',$str);    //此正则匹配ue415ue415形式的数据    //不能将二进制转成\xf0\x9f\x98\x83形式的UTF-8  }  return $str;};</code>
<code>//写进数据库$content=str_emoji(true,$content);</code>
<code>//读取数据库$content=str_emoji(false,$content);</code>

下面问题来了。

iconv(“UCS-2″,”UTF-8”,pack(“H4″,”\\1”)) 不能将二进制专程UTF-8,怎么破????
另:数据库版本不能直接存储emoji,升级数据库是肯定不可行的方案。

参考文章:http://blog.mc-zone.me/article/322

存数据库的时候 base_encode64() 取得的时候base_decode64()

mysql编码选择utf8mb4即可

数据库是mysql吧,把数据库和字段编码设置为utf8mb4,可以直接保存表情字符


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 实现emoji遇到的棘手问题,很棘手!

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址