在留言或评论区开发中 emoji 表情的处理三种方法

学习笔记 马富天 2018-07-13 11:30:14 69 0

【摘要】在 IOS,Android 手机中是很多时候是自带 emoji 表情的,而在我们网站上有很多评论区、留言区中,若用户在移动端提交了 emoji 表情,而网站并没有对输入框中的 emoji 表情进行相应的处理,则无法将该留言或评论保存到 mysql 数据库中,造成对网站的影响不好,本文讲述一下在输入框中处理 emoji 表情的通常使用的三种方法。

请输入图片名称

首先说明一下为什么 emoji 表情无法保存到 mysql 数据库中,原因是:emoji 表情是 4 个字节的,而 mysql 的 utf8 编码最多 3 个字节,所有数据无法保存。

以下以 PHP 语言通过代码示例讲述三种处理方法:

方法一,将字符串中的 emoji 特殊内容删除,即通过过滤函数,过滤掉 emoji 字符。PHP 过滤函数代码如下【完整且正确版本】:

  1. function filterEmoji($str)
  2. {
  3. 	$str = preg_replace_callback(
  4. 		'/./u',
  5. 		function(array $match){
  6. 			return strlen($match[0]) >= 4 ? '': $match[0];
  7. 		},
  8. 		$str
  9. 	);
  10. 	return $str;
  11. }

方法二,将带有 emoji 特殊字符的数据使用 base64_encode() 加密后再存储至 mysql 数据库中,输出显示的时候则使用 base64_decode() 解析一下即可。这种方法可以保持 emoji 表情依旧存在,不影响用户体验。示例为部分代码,如下:

  1. $str = "含有 emoji 表情的字符串";
  2. $c = base64_encode(htmlspecialchars($str));	//	base64 加密
  3. $sql = 'insert into test(content) value("'.$c.'")';
  4. $query = mysqli_query($link,$sql);	//	输入数据库中 
  5. //	查询表中的数据
  6. $sql = "SELECT * FROM test";
  7. $query = mysqli_query($link,$sql);
  8. while($row = mysqli_fetch_assoc($query))
  9. {
  10. 	//	将 emoji 表情和文字显示输出
  11. 	echo base64_decode($row['content']).'<br />';
  12. }

方法三,修改 mysql 数据库的字符集编码为 utf8mb4,可以直接将 emoji 表情插入数据库中。要求 mysql 版本 >= 5.5.3,这种 4 个字节的 utf8 编码可以完美兼容 3 字节的 utf8 字符集,即 utf8 -> utf8mb4。修改数据库字符集如下:

需要更改数据库及表的字符集,必要是也可以改字段的字符集。

  1. 1). 更改数据库编码:
  2. ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
  3. 2). 更改表编码:
  4. ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  5. 修改字段 column 的字符集:
  6. ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  7. 查看表字符集是否已改:
  8. show create table 表名
  9. 3). 最后且最重要的一步,连接数据库时设置的字符集为 utf8mb4,即在 PHP 连接数据库时,需设置:
  10. $sql = 'set names utf8mb4';
  11. $query = mysqli_query($link,$sql);

这种方法将 emoji 表情存到数据库后可以直接使用 sql 语句查询数据,将 emoji 表情直接显示在页面中。

本文到此主要内容已经结束,另外给个小 tip 就是 emoji 表情在 PC 端、IOS 端、Android 端同一个表情是显示出来是不同的哦。

版权归 马富天PHP博客 所有

本文标题:《在留言或评论区开发中 emoji 表情的处理三种方法》

本文链接地址:http://www.mafutian.net/369.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 linux 下设置 apache 服务器的伪静态 》 下一篇《 兼容所有浏览器的 js 实现复制文本内容到剪切板 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多