微信文章emoji表情过滤

原创
2015/11/26 14:53
阅读数 193

最近研究爬虫, 做过滤器, 遇到微信文章带emoji表情的居然没有过滤.

抓到串了存到数据库里面里面居然能够直接显示....数据库是mongodb

真是哔了狗了.

写一个小的过滤器:

/**
 * 过滤emoji工具类
 * 
 * @author createOrUpdate by xx update time: 2015-11-26 上午9:24:27
 */
public class EmojiFilter {
    /* 要过滤的特殊字符-emoji */
    private static Pattern emoji = Pattern.compile ("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE ) ;

    /**
     * 是否包含emoji特殊字符
     * @param source
     * @param emoji
     * @return
     */
    private static boolean containsEmoji(String source,Pattern emoji){
        CharSequence cs = null;
        cs = source;
        Matcher emojiMatcher = emoji.matcher(cs);
        if (emojiMatcher.find()) {
            emojiMatcher.replaceAll("");
            return true;
        }
        return false;
    }
    
    /**
     * 将字符串中得特殊字符转为空
     * @param source   原字符串, 不需要特殊处理
     * @return
     */
    public static String replaceEmoji(String source){
        if(containsEmoji(source, emoji)){
            CharSequence cs = null;
            cs = source;
            Matcher emojiMatcher = emoji.matcher(cs);
            if (emojiMatcher.find()) {
                source = emojiMatcher.replaceAll("");
            }
        }
        return source;
    }
}

过滤的时候就直接调用replaceEmoji方法了.

比如从网址抓了条数据下来:

Document doc = Jsoup.parse(new URL("你的网址"), 5000);
String html = doc.html();
html = EmojiFilter.replaceEmoji(html);
doc = Jsoup.parse(html);

这样就过滤掉了.

例子:

\u2705

这个unicode其实是:

没错, myeclipse可以直接显示这个.


另外:如果大家有什么好的过滤方法也都希望给我回复一下,我学习学习.....

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部