js 怎么把emoji表情给过滤掉
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 怎么把emoji表情给过滤掉相关的知识,希望对你有一定的参考价值。
请问你之前提过这个问题,解决了,是怎么解决的呢?
1,确定你的emoji的引入途径或者是否在项目内部加载了这个插件;2,找到emoji引入的途径,把它关闭,并在JS代码内删除引入emoji的调用方法
3,把该表情的HTML部分删除或者设置为隐藏
4,如果你以上3步都没办法做到,那么可以考虑直接找到emoji表情存放页面的HTML直接删除甚至使用DIV覆盖(不推荐) 参考技术A
可以使用正则表达式将emoji表情进行过滤,具体代码如下:
text.replace(/^[\\ue04e-\\ue50e]+$/gi, replacement);//其中replacement表示你想替换成什么,如果只需要过滤掉,直接两个引号就是 参考技术B 1.将Mysql的编码从utf8转换成utf8mb4
2.前端JS校验过滤掉emoji表情
下面主要粘下过滤emoji的JS代码
function filteremoji()
var ranges = [
'\ud83c[\udf00-\udfff]',
'\ud83d[\udc00-\ude4f]',
'\ud83d[\ude80-\udeff]'
];
var emojireg = $("#emoji_input").val();
emojireg = emojireg .replace(new RegExp(ranges.join('|'), 'g'), ''));
参考技术C emoji表情都是已:开头,已:结尾的。
使用正则表达式进行替换即可
^\:[a-z0-9_]+\:$ 参考技术D 一般是用正则,但是你说这个过滤指的是什么?是页面输出的还是输入框的?还是怎样的?emoji表情以什么方式展示的?这个都不知道,不好回答
在开发聊天软件相关的时候遇到emoji表情
在聊天软件,如微信,在请求好友昵称的时候,经常会遇到emoji格式的表情头像,通常我们冲后台获取到的字符串都是<span class=\"emoji emoji2122\"></span> 这样一个格式,
怎么在textview中显示出emoji表情呢?
其实很简单,我们把对应的emoji的值取出来,转换为16进制的值,直接给textview,textview就可以直接识别出来,不同版本识别的emoji是有区别的,最直接的就是android和ios。
可以直接复制EmojiUtils,调用convert就可以了,这个方法会把nickname中的emoji过滤,返回一个替换掉span的字符串回来。但是需要注意有些特殊的emoji表情是两个emoji值表示出来的,不同版本显示会有所不同。
public class EmojiUtils {
public static final String EMOJI_PATTERN =
"<span\\s+class\\s*=\\s*\\\\?\"emoji emoji(\\p{XDigit}+)\\\\?\"></span>";
public static String convert(String orignalName) {
if (orignalName == null || orignalName.isEmpty()) {
return orignalName;
}
Pattern p = Pattern.compile(EMOJI_PATTERN);
Matcher matcher = p.matcher(orignalName);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String emojiCode = matcher.group(1);
matcher.appendReplacement(buffer, getReplacement(emojiCode));
}
matcher.appendTail(buffer);
return buffer.toString();
}
private static String getReplacement(String emojiCode) {
int length = emojiCode.length();
String replacement = "?";
if (length == 4 || length == 5) {
replacement = emojiCodeToUnicode(emojiCode);
} else if (length == 6 || length == 8) {
if (length == 6) {
String start = emojiCodeToUnicode(emojiCode.substring(0, 2));
String end = emojiCodeToUnicode(emojiCode.substring(2, 6));
replacement = start + end;
} else {
String start = emojiCodeToUnicode(emojiCode.substring(0, 4));
String end = emojiCodeToUnicode(emojiCode.substring(4, 8));
replacement = start + end;
}
} else if (length == 10) {
String start = emojiCodeToUnicode(emojiCode.substring(0, 5));
String end = emojiCodeToUnicode(emojiCode.substring(5, 10));
replacement = start + end;
}
return replacement;
}
private static String emojiCodeToUnicode(String emojiCode) {
return new String(Character.toChars(Integer.parseInt(emojiCode, 16)));
}
}
以上是关于js 怎么把emoji表情给过滤掉的主要内容,如果未能解决你的问题,请参考以下文章