84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
做了一个页面,主要是手机上输入的内容,要显示在PC浏览器上。
然而手机端能输入emoji,但浏览器显示不出来。由于某些原因也不想让它显示出来。
所以希望在手机端提交时做一下检测,检查用户输入的文本中是否包含emoji,如果有就提示用户不能包含emoji。
请问这个if条件该怎么写?
php后端或js前端的代码都可以。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
用正则表达式过滤呗,或者用unicode编码判断
http://www.unicode.org/Public...根据里面列出来的范围进行过滤,可以用正则表达式,也可以列一个hash map
var re = /[表情1]|[表情2]|[表情3]..../ ;re.test(你要检测的字符);
其实有一个办法。用mb系列函数来实现。首先确定长度。然后,循环判断每个字符,那个字符是4个字节的就可以了。emoiji的一个符号占用4个字符。一般的字符串也就是汉字最多占用3个字符。这么一判断,就能搞定了。
mb
确定字符的编码,然后,匹配,替换。
var param = ""; var regRule = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g; if(param.match(regRule)) { param = param.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, ""); alert("不支持表情"); }
function have_emoji($str){ $mat = []; preg_match_all('/./u', $str,$mat); foreach ($mat[0] as $v){ if(strlen($v) > 3){return true;} } return false; }
用正则表达式过滤呗,或者用unicode编码判断
http://www.unicode.org/Public...
根据里面列出来的范围进行过滤,可以用正则表达式,也可以列一个hash map
var re = /[表情1]|[表情2]|[表情3]..../ ;
re.test(你要检测的字符);
其实有一个办法。用
mb
系列函数来实现。首先确定长度。然后,循环判断每个字符,那个字符是4个字节的就可以了。emoiji的一个符号占用4个字符。一般的字符串也就是汉字最多占用3个字符。这么一判断,就能搞定了。确定字符的编码,然后,匹配,替换。