1.判断是否base64编码过
function is_base64($str) { // if(!preg_match('^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$',$str)){ // return false; // }else{ // return true; // } // return false; if(preg_match('/^[0-9]*$/',$str)||preg_match('/^[a-zA-Z]*$/',$str)){ return false; }else if(strlen($str) % 4){ return false; } else if(is_utf8(base64_decode($str)) && base64_decode($str) != ''){ return true; } return false; } function is_utf8($str){ $len = strlen($str); for($i = 0; $i < $len; $i++){ $c = ord($str[$i]); if($c > 128){ if(($c > 247)){ return false; }elseif($c > 239){ $bytes = 4; }elseif($c > 223){ $bytes = 3; }elseif ($c > 191){ $bytes = 2; }else{ return false; } if(($i + $bytes) > $len){ return false; } while($bytes > 1){ $i++; $b = ord($str[$i]); if($b < 128 || $b > 191){ return false; } $bytes--; } } } return true; }
如果是,使用base64_decode($str)解码,然后将解码后的字符串去掉特殊符号
function filterEmoji($str) { $str = preg_replace_callback( '/./u', function (array $match) { return strlen($match[0]) >= 4 ? '' : $match[0]; }, $str); return $str; }