当用户注册我的网站时,我想允许他们在用户名中使用空格,但每个单词只能使用一个空格。
我目前的代码:
$usor = $_POST['usernameone'];
$allowed = "/[^a-z0-9 ]/i";
$username = preg_replace($allowed,"",$usor);
$firstlettercheck = $username[0];
$lastlettercheck = substr("$username", -1);
if ($firstlettercheck == " " or $lastlettercheck == " ")
{
echo "Usernames can not contain a space at start/end of username.";
}
我需要添加什么才能确保在用户名的字词之间只输入一个空格?
答案 0 :(得分:1)
您可以使用(^\s+|\s{2,}|\s+$)
的正则表达式来验证使用preg_match
:
if (preg_match('/(^\s+|\s{2,}|\s+$)/', $username)) {
echo "Usernames can not contain a space at start/end of username and can't contain double spacing.";
}
<强>尸检强>:
(^\s+|\s{2,}|\s+$)
:
^\s+
在字符串的开头匹配1个或多个空白字符(空格/制表符/换行符) |
或: \s{2,}
在字符串中的任意位置匹配2个或更多空白字符(空格/制表符/换行符) |
或: \s+$
在字符串末尾匹配1个或多个空白字符(空格/制表符/换行符) 如果您希望单独测试它们:
if (preg_match('/(^\s+|\s+$)/', $username)) {
echo 'Usernames can not contain a space at start/end of username.';
} else if (preg_match('/\s{2,}/', $username)) {
echo 'Usernames can not contain double spacing.';
}
答案 1 :(得分:0)
使用以下内容:
$username = preg_replace('/[\s]+', " ", $usor);
这将用一个空格替换多个空格。