js 怎么把emoji表情给过滤掉

JavaScript012

1,确定你的emoji的引入途径或者是否在项目内部加载了这个插件;

2,找到emoji引入的途径,把它关闭,并在JS代码内删除引入emoji的调用方法

3,把该表情的HTML部分删除或者设置为隐藏

4,如果你以上3步都没办法做到,那么可以考虑直接找到emoji表情存放页面的HTML直接删除甚至使用DIV覆盖(不推荐)

<span style="font-family: Arial, Helvetica, sans-serif">过滤该表情</span>

[java] view plain copy

public static String filterEmoji(String source) {

if (!containsEmoji(source)) {

return source// 如果不包含,直接返回

}

StringBuilder buf = null

int len = source.length()

for (int i = 0i <leni++) {

char codePoint = source.charAt(i)

if (!isEmojiCharacter(codePoint)) {

if (buf == null) {

buf = new StringBuilder(source.length())

}

buf.append(codePoint)

} else {

}

}

if (buf == null) {

return ""

} else {

if (buf.length() == len) {// 这里的意义在于尽可能少的toString,因为会重新生成字符串

buf = null

return source

} else {

return buf.toString()

}

}

}

[java] view plain copy

// 判别是否包含Emoji表情

private static boolean containsEmoji(String str) {

int len = str.length()

for (int i = 0i <leni++) {

if (isEmojiCharacter(str.charAt(i))) {

return true

}

}

return false

}

private static boolean isEmojiCharacter(char codePoint) {

return !((codePoint == 0x0) ||

(codePoint == 0x9) ||

(codePoint == 0xA) ||

(codePoint == 0xD) ||

((codePoint >= 0x20) &&(codePoint <= 0xD7FF)) ||

((codePoint >= 0xE000) &&(codePoint <= 0xFFFD)) ||

((codePoint >= 0x10000) &&(codePoint <= 0x10FFFF)))

}

1、先上张图片,给大家看看需求是什么样的:

要求在安卓端或是iOS端上添加的emoji表情要能在web端进行展示出来。

2、拿到这种需求,对于底层的程序员来说,没办法以前没接触过,我只在斗图中见它们的次数比较多,所以只能去寻找度娘的帮助,你知道的,度娘给我们展示的一般都是比较高级的。所以一般文字太多的比较看不懂,尤其是讲述一些编码的问题,我更是不懂,所以还是手把手的教程比较靠谱。

3、我开始从数据库中拿到的数据是这样的

我展示出来的效果也是这样的,带一些小框框,这怎么能忍受的了,果断去寻找解决的办法。

4、最终,I get it  ,下面我讲述一些解决的办法。

5、首先引入,emoji.css  emoji.js   emoji.png这三个文件。记住这三个资源文件是在同一层的,并且千万别忘记引用.png图片,因为表情的展示全靠它呢。

这里看到了没,最关键的代码,其中$('.remark-edit')是你用来展示表情的div,记住div里存放的是展示表情和字符串的文本,不能有其他的标签在里面,我试了会出错,不过也肯定能解决,我没尝试哈,大家可以试试看。

emoji.unifiedToHTML(html)就是调用emoji.js里的表情解析方法,我用的是avalon引入js的方法,如果想直接引入,你可以用emoji.js里的对象

如果要进行发送评论的时候要注意对emoji表情进行反解析,也就是过滤掉span标签,进行还原为原始的数据,看下图所示:

就是这个来去调用。

Emoji表情符号在OS X系统和iOS、Android、Windows Phone等各个手机中已经默认支持,所以在这些设备的Web端显示没有问题,可直接使用。

但是在Windows系统中,Web端显示Emoji或多或少都有一些问题。

首先,Windows 8 和 Windows Server 2012 默认也是支持 Emoji 的,但是只有在IE浏览器中才会显示。至于 

Windows 7 和 Windows Server 2008 R2 只要是更新了补丁包 KB2729094 

的,也可以在IE中直接显示Emoji。而这些系统的非IE浏览器却无法显示。

其实,补丁包 KB2729094 对Emoji的支持只不过是增加了“Segoe UI 符号字体”,只要在Web端CSS中引入这个字体,便可以让所有浏览器都支持Emoji。