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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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表情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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