When users register to my website I want to allow them to use spaces in their username, but only one space per word.
My current code:
$usor = $_POST[
You can use a regex of (^\s+|\s{2,}|\s+$)
to validate using 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.";
}
REGEX DEMO
Autopsy:
(^\s+|\s{2,}|\s+$)
:
^\s+
matches 1 or more white-space characters (space/tab/newline) in the start of the string|
OR:\s{2,}
matches 2 or more white-space characters (space/tab/newline) anywhere in the string|
OR:\s+$
matches 1 or more white-space characters (space/tab/newline) in the end of the stringIf you wish to test them separately instead:
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.';
}
Use the following:
$username = preg_replace('/[\s]+', " ", $usor);
That will replace multiple spaces with a single space.