微信经理向我扔虫子.发现并过滤有空昵称的用户。如果昵称为空,系统将生成默认用户昵称。
研究这个问题花了很长时间,直接自信地写了出来。
Function trim_blank($str){
Returnpreg _ replace ('/\ s/u '''$ str);
}问题仍然没有解决。好像是空白的特殊字符。请在json_encode下查看字符编码
$ str=
$ s=JSON _ encode($ str);
var _ dump($ s);
运行结果:
String (8)''' \ u 3164 ' '通过匹配正则表达式,三种表示法如下:
/* *
*方法1
直接复制*空格字符,并将其复制到preg_replacede的第一个参数中
*/
Preg _ replace ('//'''$ str);
/* *
*方法2
*转码后删除
*/
$ str=
$ str=JSON _ encode($ str);//转码
Preg _ replace ('/\ \ \ u3164/'''$ str);
/* *
*方法3
*/
Preg _ replace ('/\ x {u3164}/u '''$ str);默认情况下,Php的trim()方法从两侧删除以下字符:
符号
说明
\ "\0 \ "
NULL
\t '
选项卡
\n '
换行
“\x0B”
垂直制表符
\r '
回车
将:文档常规替换为preg_replace()中的\s是任意空格字符,但无需删除上面的\u00a0,只能删除常规空格字符。最后,通过详细的测试搜索,在对字符类的描述中,空格字符被ht(;该列表包含垂直选项卡。这将使空间与\s不同。由于不包含垂直制表符(出于perl兼容性考虑),因此空间与\s中的空间引用空格字符类不同,\s [是]也可以删除这些普通空格字符。那有什么空白短信?具体没有发现说有什么空白字符,但从js的正则表达式中可以看出\s可以匹配的空白范围比较广。
matches a single white space character,including space,tab,form feed,line feed . equivalent to[\ f \ n \;
For example,/\ s \ w */matches' bar' in' foo bar . '其中\u2028是行分隔符,\u2029是段落分隔符,\ufeff是
字节顺序标记:字节顺序标记(BOM)。如果U FEFF字符最初出现在字节流的开头,则标识该字节流的字节顺序——是父项还是子项。如果出现在字节流的中间,则该字符的原始含义为——(零宽度为空)。从unicode 3 . 2开始,U FEFF只能出现在字节流的开头,并且只能用于标识字节顺序,如别名——字节顺序标记3354所示。其他用法已经废弃了。相反,如果宽度为零,请使用U 2060不要中断空格。
说了那么多废话,请在下面给我完整的代码。
Function trim_blank($str){
$ partern='/[\ x { 00a 0 } \ x { 1680 } \ x { 2000 }-\ x { 200 a } \ x { 2028 } \
Returnpreg _ replace ($ partern,''$ str);
}(此处添加了小程序。请在今天的头条客户端查看。)