js -- 格式化微信 nickname,姓名保留第一个字,其余用*显示
截取微信 nickname 中需要注意的是,表情符号和特殊字符,如果你不用正则过滤掉的话,使用 slice(0,1) 直接截取第一个字符串是不行的,因为表情符号占用两个字节,截取一半,ios 会报错,android 可能会显示乱码,这些都不是我们想要的!
ES6中提供给我们一个方法Array.from()
Array.from()方法就是将一个类数组对象或者可比案例对象转换成一个真正的数组。
类数组对象:最基本的要求就是具有length属性的对象。
这里用到的就是:将字符串转换为数组 的这个方法
let str = "Hello";
console.log(Arry.from(str)); // ["H","e","l","l","o"];
formatName(value, num = 1) {
if (!value) return ''
value = value.replace(/(^\s+)|(\s+$)/g, "").replace(/\'/g,"‘").replace(/\"/g,"“");
var s = '';
var strLength = this.getStrLength(value);
for (var i = 0; i < strLength - 1; i++) {
if(i>=6) break; // star 最多显示6位
s += '*';
}
return this.truncated(value, num) + s;
},
truncated(str, num){
return Array.from(str).slice(0, num).join('');
},
getStrLength(str){
return Array.from(str).length;
},
延伸一个表单提交的时候,过滤emoji表情的方法
js检测输入框是否含有emoji表情(移动端比较常见)
var param = document.getElementById(id).value;
var regRule = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g;
if(param.match(regRule)) {
param = param.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, “”);
alert(“不支持表情”);
}
PHP后端代码
function have_emoji($str){
$mat = [];
preg_match_all('/./u', $str,$mat);
foreach ($mat[0] as $v){
if(strlen($v) > 3){return true;}
}
return false;
}