方法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表情去除掉或者替换为其他字符。替换的函数使用如下:
源码如下(可复制):
<?php
/**
* 替换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;}
转载请注明:XAMPP中文组官网 » PHP中处理内容含有emoji表情的几种方式