PHP处理字符中的emoji表情

含有 emoji 表情的字符串在 MySQL 中的储存

utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字节。utf-8 编码的常用中文字符占用 3 个字节。

处理有以下几种方法:

  1. MySQL 使用 utf8mb4 字符集。
  2. PHP 对字符串进行 base64或者urlencode 编码,从数据库中取出进行解码。
  3. 直接移除字符串中的 emoji 表情

 

判断字符串中是否含有 emoji 表情

function haveEmoji($str)
{
    $mbLen = mb_strlen($str);
    
    $strArr = [];
    for ($i = 0; $i < $mbLen; $i++) {
        $strArr[] = mb_substr($str, $i, 1, 'utf-8');
        if (strlen($strArr[$i]) >= 4) {
            return true;
        }
    }
    
    return false;
}

移除字符串中的 emoji 表情

function removeEmoji($str)
{
    $mbLen = mb_strlen($str);
    
    $strArr = [];
    for ($i = 0; $i < $mbLen; $i++) {
        $mbSubstr = mb_substr($str, $i, 1, 'utf-8');
        if (strlen($mbSubstr) >= 4) {
            continue;
        }
        $strArr[] = $mbSubstr;
    }
    
    return implode('', $strArr);
}

 

你可能感兴趣的:(PHP,Mysql,PHP,表情emoji,mysql)