• java代码过滤emoji表情


    可以新建一个过滤器的类,在类中书写如下代码:

    public static String filterEmoji(String source) { 
             if(source != null)
             {
                 Pattern emoji = Pattern.compile ("[ud83cudc00-ud83cudfff]|[ud83dudc00-ud83dudfff]|[u2600-u27ff]",Pattern.UNICODE_CASE | Pattern . CASE_INSENSITIVE ) ;
                 Matcher emojiMatcher = emoji.matcher(source);
                 if ( emojiMatcher.find())
                 {
                     source = emojiMatcher.replaceAll("*");
                     return source ;
                 }
             return source;
            }
            return source; 
         }
     
    如果没有改变的话,可以在该类中书写以下代码:
    private static final long serialVersionUID = -5916500037685553487L;
        public void destroy() {
           // TODO Auto-generated method stub
        }

        @SuppressWarnings("unchecked")
        public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain arg2) throws IOException, ServletException {
           HttpServletRequest servletrequest = (HttpServletRequest) request;
           //新加代码http://www.2cto.com/kf/201512/455191.html
           HttpServletResponse servletresponse = (HttpServletResponse) response;
           String param = "";
           String paramValue = "";

           servletresponse.setContentType("text/html");
           servletresponse.setCharacterEncoding("UTF-8");
           servletrequest.setCharacterEncoding("UTF-8");
           java.util.Enumeration params = request.getParameterNames();
           while (params.hasMoreElements()) {

            param = (String) params.nextElement();
            String[] values = servletrequest.getParameterValues(param);//获得每个参数的value
           
            for (int i = 0; i < values.length; i++) {

             paramValue = values[i];
            
             
             paramValue = paramValue.replaceAll("<script>", "(*");
             paramValue = paramValue.replaceAll("</script>", ")");
             paramValue = paramValue.replaceAll("[ud83cudc00-ud83cudfff]|[ud83dudc00-ud83dudfff]|[u2600-u27ff]", ""); //过滤emoji表情
            
             
            //这里还可以增加,如领导人 自动转义成****,可以从数据库中读取非法关键字。
             values[i] = paramValue;
            }

        //把转义后的参数重新放回request中
            request.setAttribute(param, paramValue);
           }
           //继续向下

           arg2.doFilter(request, response);

        }

        public void init(FilterConfig arg0) throws ServletException {
           // 初始化

        }
    }
     
  • 相关阅读:
    基于ZYNQ XC7Z045 FFG 900的高性能计算模块
    linux TCP数据包封装在SKB的过程分析
    关于 linux中TCP数据包(SKB)序列号的小笔记
    TCP的TIME_WAIT状态
    Linux-2.6.25 TCPIP函数调用大致流程
    Linux 下不经过BIOS重启(i386)
    Linux块设备加密之dm-crypt分析
    Device Mapper 代码分析
    Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 3 部分: Systemtap
    Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 2 部分: DTrace
  • 原文地址:https://www.cnblogs.com/s1-myblog/p/5467358.html
Copyright © 2020-2023  润新知