《PHP实战:3种方法轻松处理php开发中emoji表情的问题》要点:

本文介绍了PHP实战:3种方法轻松处理php开发中emoji表情的问题,希望对您有用。如果有疑问,可以联系我们。

背景

PHP实战做微信开发的时候就会发现,存储微信昵称必不可少.

PHP实战可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了

PHP实战一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢?

PHP实战原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了.这要怎么办呢?我来介绍几种方法

PHP实战解决方案

PHP实战1、使用utf8mb4字符集

PHP实战如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集

这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案

至于字节增大带来的性能损耗,我看过一些评测,几乎是可以忽略不计的

PHP实战2、使用base64编码

PHP实战如果你因为某些原因无法使用utf8mb4的话,你还可以使用base64来曲线救国

使用例如base64_encode之类的函数编码过后的emoji可以直接存储在utf8字节集的数据表中,取出时decode一下即可

PHP实战3、干掉emoji表情

PHP实战emoji表情是个麻烦的东西,即使你能存储,也不一定能完美显示.在iOS以外的平台上,例如PC或者android.如果你需要显示emoji,就得准备一大堆emoji图片并使用第三方前端类库才行.即便如此,还是可能因为emoji图片不够全而出现无法显示的情况在大多数业务场景下,emoji也不是非要不可的.我们可以适当地考虑干掉它,节约各种成本

PHP实战经过一番苦苦的google,终于找到靠谱能用的代码:

PHP实战

// 过滤掉emoji表情

function filterEmoji($str)

{

$str = preg_replace_callback(

'/./u',

function (array $match) {

return strlen($match[0]) >= 4 ? '' : $match[0];

},

$str);

return $str;

}

PHP实战以上就是为大家总结的PHP微信开发中涉及到emoji表情的几种处理方法,基本思想就是遍历字符串中的每个字符,如果该字符的长度为4个字节,就将其删除.希望大家喜欢!

php处理emoji表情方法,PHP实战:3种方法轻松处理php开发中emoji表情的问题相关推荐

  1. php 打印对象到文件,php实现将数组或对象写入到文件的方法小结【三种方法】...

    本文实例讲述了php实现将数组或对象写入到文件的方法.分享给大家供大家参考,具体如下: php将数组或对象原样写入或保存到文件有三种方法可以实现 第一种方法是使用serialize, 第二种方法是使用 ...

  2. python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】

    这里首先给出来我很早之前写的一篇博客,Python实现去除列表中重复元素的方法小结[4种方法],感兴趣的话可以去看看,今天是在实践过程中又积累了一些方法,这里一并总结放在这里. 由于内容很简单,就不再 ...

  3. php随机数字符串,php生成随机数/生成随机字符串的方法小结【5种方法】

    php生成随机数/生成随机字符串的方法小结[5种方法],字符串,随机数,在线,数组,字符 php生成随机数/生成随机字符串的方法小结[5种方法] 易采站长站,站长之家为您整理了php生成随机数/生成随 ...

  4. php 微信表情存储,轻松处理PHP开发中微信emoji表情mysql存储的问题

    背景 做微信开发的时候发现,微信支持emoji表情做昵称,结果考虑不周 Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.有的 ...

  5. python真正实现多线程的方法_python多线程几种方法实现

    匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...

  6. java开启线程的方法_Java有几种方法开启线程?怎么实现带有返回值的线程?

    Java有几种方法开启线程?怎么实现带有返回值的线程? 发布时间:2020-05-22 11:20:08 来源:亿速云 阅读:238 作者:Leah Java有几种方法开启线程?怎么实现带有返回值的线 ...

  7. python调用C语言函数(方法)的几种方法

    1. 使用ctypes 可能是Python调用C方法中最简单的一种 2. 使用SWIG 是Python中调用C代码的另一种方法.在这个方法中,开发人员必须编写一个额外的接口文件来作为SWIG的入口. ...

  8. php多维求组按照健值排序,PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】...

    本文实例讲述了PHP编程实现多维数组按照某个键值排序的方法.分享给大家供大家参考,具体如下: 实现对多维数组按照某个键值排序的两种解决方法(array_multisort和array_sort): 第 ...

  9. excel多条件计数python_Excel统计满足条件的不重复值个数的8种方法,第三种方法最适合新手!我真的入门了!...

    问题很常见,但是对新手来说又比较棘手,所以我们来一期,系统讲讲,个人我个人的知识储备,大概写了8种,涵盖Excel的方方面面!最后一种也满足一下大家对于Python的好奇! 友情提醒:应该是目前你所能 ...

最新文章

  1. JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案
  2. 一次bug调试经验----To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
  3. struts2标签处理下拉列表
  4. java实用教程——组件及事件处理——概述
  5. Jsoup(三)-- Jsoup使用选择器语法查找DOM元素
  6. 这三个Offer,你怎么选?
  7. liferay 去掉 portlet:actionUrl 跳转时的message
  8. AngularJs学习日记[8]:$http
  9. java多线程-线程停止
  10. 以下是adb工具包最新Google官方版下载地址:
  11. MSDEV.EXE-应用程序错误解决办法
  12. (Matlab实现)基于蒙特卡洛模拟的大规模电动车充电模型
  13. 亿玛大数据揭秘“钻石网购密码” 最高单价超15万
  14. 找一找马里奥-第14届蓝桥杯STEMA测评Scratch真题精选
  15. 在cmd运行java_用cmd运行java时的问题
  16. Xception简介
  17. css 隐藏滚动条 但是可以滚动
  18. Android kernel log level查看和设置
  19. 【设计题】想实现一个对页面某个节点的拖曳?如何做?(使用原生JS)
  20. Android 仿iphone提醒事项(一)

热门文章

  1. 等保2.0三级云计算扩展要求
  2. 二分查找算法python实现_Python实现-二分查找算法(3种方法)
  3. CAD梦想画图中“绘图工具——正多边形”
  4. Linux环境创建oracle数据库
  5. (附源码)计算机毕业设计SSM基于大数据的汽车流量监控
  6. CAD查看器软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 便签文档储存位置在哪?便签保存在哪个文件夹,怎么在文件管理找到
  8. 1db增益压缩点的作用
  9. oracle 抽样_oracle优化手段--统计信息导出和抽样提取数据
  10. 错误: 找不到或无法加载主类 com.zz.javajdbc.JDBCTest