utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字节。utf-8 编码的常用中文字符占用 3 个字节。
处理有以下几种方法:
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;
}
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);
}