方法1: 数据库、表用utf8mb4编码

utf8mb4是4字节的utf8编码,可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情。如果要用这种方式解决问题,那么PHP的版本需要>=5.5.3。

方法2: 使用base64编码

在存储至数据库时用base64_encode()函数将内容编码,然后在取出时再base64_decode()解码即可达到效果。

方法3: 使用json_encode / decode

此方法原理类似方法2,在存储至数据库时用json_encode()函数将内容编码,然后在取出时再json_decode()解码。

方法4: 替换/去除emoji表情

这种方式是最极端暴力的做法,直接将emoji表情去除掉或者替换为其他字符。替换的函数使用如下:

源码如下(可复制):

/**

* 替换emoji表情

* @author:xiangzhanyou

* @date:20170706

*

* @param $str 要过滤emoji表情的内容

* @param string $replace_str 要替换成的字符,默认是空

* @return 返回替换后的字符串

*/function filterEmoji($str,$replace_str=''){

$rs = preg_replace_callback(

'/./u',

function (array $match,$replace_str) {

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

},

$str

);

return $rs;}

php字符串函数处理emoji,PHP中处理内容含有emoji表情的几种方式相关推荐

  1. Android中实现SQLite数据库CRUD操作的两种方式

    Android中实现SQLite数据库CRUD操作的两种方式 SQLite是一款轻量级的关系型数据库,具有运行速度.占用资源少的特点.通常只需要几百KB的内存就够了,因此特别适合在移动设备上使用.SQ ...

  2. form表单、控制器中接收表单提交数据的4种方式

    Form表单 这篇文章主要讲的是form表单的提交 之前我们接触过的form表单元素是在Bootstrap框架里面,这次也将用到Bootstrap框架去布局(见图表1)通过Bootstrap框架布局呈 ...

  3. asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...

    在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式, 两者的差异如下:     使用Dataset对象读取数据大致需要以下5个步骤:     (1)建立数据库 ...

  4. linux exec 脚本之家,详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

  5. Excel中数据透视表数据源更新的三种方式

    Excel中数据透视表数据源更新的三种方式 1.在原有的基础上重新选择数据源 2.变数据源为表格形式,在创建一个透视表,之后如果添加的数据,选中透视表右键刷新即可 3.利用更新过的数据源再重新创建一个 ...

  6. android布局密码,Android中EditText显示明文与密码的两种方式

    效果图如下所述: 布局 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h ...

  7. Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式 1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23);  3.运 ...

  8. python中交换两个变量值的几种方式?

    python中交换两个变量值的几种方式 1.python中独有的,也是最简单的方式: a,b=b,a 2.引入第三个变量,可以看作两个装满牛奶的瓶子a和瓶子b,如果我想交换这两个瓶子中的牛奶,就需要一 ...

  9. sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数

    sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer's l ...

最新文章

  1. Java培训分享void的用法和意义
  2. 4936: 特殊排序
  3. whois老域名挖掘技术
  4. codeforce 185 A——Plant
  5. 行为型模式:解释器模式
  6. 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步...
  7. Databricks文档01----Azure Databricks初探
  8. 一个boost底下的线程池
  9. 虚拟环境virtualenv
  10. clickhouse修改表的TTL
  11. Clear Float
  12. 一个关于传奇3G游戏的感言
  13. perl脚本GET系统命令执行
  14. 在Ubuntu16.04上安装QQ
  15. CSS基础知识——常用基础命令
  16. bootstrap的carousel-indicators是怎么实现垂直居中的
  17. 5V开关电路应用设计
  18. mac 怎样切换 node 版本 , 如何安装oh-my-zsh
  19. 51 单片机数据存储
  20. python中.mul()和.mul_(),.exp()和.exp_()区别

热门文章

  1. 12个黑科技网站,每个都是十分良心了 zt – 步行街主干道 – 虎扑社区
  2. 无线视频监控系统设计
  3. 分子动力学基本概念(持续更新)
  4. C语言内联汇编使用方法
  5. 基于单片机的公交车报站系统
  6. VMT model 简介
  7. python openpyxl 新建 excel xlsx
  8. Unity SKFramework框架(十七)、FreeCameraController 上帝视角/自由视角相机控制脚本
  9. 【Java SE】多线程
  10. 基于SSH框架的学生考试系统(注意看文档目录)