判断字符串是否包含😈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;
}
上面代码重点就是strlen
和mb_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);
}