过滤emoji表情符

1.使用正则匹配json

public  function remove_emoji($text){
        return preg_replace('/([0-9|#][\x{20E3}])|[\x{00ae}|\x{00a9}|\x{203C}|\x{2047}|\x{2048}|\x{2049}|\x{3030}|\x{303D}|\x{2139}|\x{2122}|\x{3297}|\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]?/u', '', $text);
    }code

2.unicode

 /**     把用户输入的文本转义(主要针对特殊符号和emoji表情)      */     public static function filterEmoji($str){         if(!is_string($str))return $str;         if(!$str || $str=='undefined')return '';         $text = json_encode($str); //暴露出unicode         $text = preg_replace_callback("/(\\\u[ed][0-9a-f]{3}){2}/i",function($str){             return "?";         },$text); //将emoji的unicode留下,其余不动,这里的正则比原答案增长了d,由于我发现我不少emoji其实是\ud开头的,反而暂时没发现有\ue开头。         return json_decode($text);     }
相关文章
相关标签/搜索