本帖最后由 default7 于 2014-05-25 18:39:45 编辑
对提交的注册用户名 $uname 的需求:1 要求名称可以由中文 英文混合组成,但是中间不能包含有空格
2 不能包含如下 $arr2 中的特殊字符
3 但是可以包含中文的 左右括号 “(” “)”
<br /><?php<br />function checkReg($uname)<br />{<br />/**<br />//写成简短的<br />$arr2 = array(<br />'~', '!', '@', '#', '$', '%', '^', '&', '*', '_', '+', '|', '-', '=', '\\',<br />'{', '}', '[', ']', ':', ';', '"', '\'', '<', '>', ',', '.', '?', '/', '“', '”',<br />'’', '‘', '【', '】', '~', '!', '¥', '……', '——', '、', '《', '》', '。',<br />PHP_EOL, chr(10), chr(13), "\t", chr(32),<br />);<br />**/<br /> $arr2 = array(<br /> '~',<br /> '!',<br /> '@',<br /> '#',<br /> '$',<br /> '%',<br /> '^',<br /> '&',<br /> '*',<br /> '_',<br /> '+',<br /> '|',<br /> '-',<br /> '=',<br /> '\\',<br /> '{',<br /> '}',<br /> '[',<br /> ']',<br /> ':',<br /> ';',<br /> '"',<br /> '\'',<br /> '<',<br /> '>',<br /> ',',<br /> '.',<br /> '?',<br /> '/',<br /> '“',<br /> '”',<br /> '’',<br /> '‘',<br /> '【',<br /> '】',<br /> '~',<br /> '!',<br /> '¥',<br /> '……',<br /> '——',<br /> '、',<br /> '《',<br /> '》',<br /> '。',<br /> PHP_EOL,<br /> chr(10),<br /> chr(13), //\r\n<br /> "\t",<br /> chr(32),<br /> );<br /><br /><br /> foreach ($arr2 as $k) {<br /> //我之前用 preg_match 结果有乱码,全乱了。后来用strpos (default7#zbphp.com)<br /> if (strpos($uname, $k) !== false) {<br /> $tips = "注册名中不能含有空格、点、逗号等特殊字符!";<br /><br /> return array(false, $tips);<br /> }<br /> }<br /><br /> return array(true, 'ok');<br />}<br />
------解决方案--------------------if($s == str_replace($arr2, '', $s)) {<br /> //不包含特殊字符<br />}else{<br /> //包含特殊字符<br />}