判断字符串是否包含😈emoji表情

UTF-8编码下,一个中文占3个字节,而emoji或一些特殊字符占4个字节,我们可以以此来判断字符串是否包含emoji

function haveEmojiChar($str)
{
    $mbLen = mb_strlen($str);

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

上面代码重点就是strlenmb_strlen这两个函数。通过这个方法,我们稍微修改下就能删除字符串中的emoji表情

function removeEmojiChar($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);
}

参考:https://www.cnblogs.com/my3306/p/9849923.html

原文地址:https://www.cnblogs.com/bilberry/p/13896624.html