欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

【正则】如何写判断提交的用户名中不包含如下特殊字符?求方法

程序员文章站 2022-04-12 20:45:37
...
对提交的注册用户名 $uname 的需求:
1 要求名称可以由中文 英文混合组成,但是中间不能包含有空格
2 不能包含如下 $arr2 中的特殊字符
3 但是可以包含中文的 左右括号 “(” “)”

', ',', '.', '?', '/', '“', '”','’', '‘', '【', '】', '~', '!', '¥', '……', '??', '、', '《', '》', '。',PHP_EOL, chr(10), chr(13), "\t", chr(32),);**/    $arr2 = array(        '~',        '!',        '@',        '#',        '$',        '%',        '^',        '&',        '*',        '_',        '+',        '|',        '-',        '=',        '\\',        '{',        '}',        '[',        ']',        ':',        ';',        '"',        '\'',        '',        ',',        '.',        '?',        '/',        '“',        '”',        '’',        '‘',        '【',        '】',        '~',        '!',        '¥',        '……',        '??',        '、',        '《',        '》',        '。',        PHP_EOL,        chr(10),        chr(13), //\r\n        "\t",        chr(32),    );    foreach ($arr2 as $k) {        //我之前用 preg_match 结果有乱码,全乱了。后来用strpos  (default7#zbphp.com)        if (strpos($uname, $k) !== false) {            $tips = "注册名中不能含有空格、点、逗号等特殊字符!";            return array(false, $tips);        }    }    return array(true, 'ok');}



回复讨论(解决方案)

if(strlen($s) == strlen(str_replace($arr2, '', $s))) {  //不包含特殊字符}else{ //包含特殊字符}

if($s == str_replace($arr2, '', $s)) {  //不包含特殊字符}else{ //包含特殊字符}