Как проверить наличие пробелов и специальных символов

Я пытаюсь закодировать форму для входа в систему, используя php, чтобы проверить это. Но я не могу проверить, есть ли у меня какие-либо пробелы и специальные символы для имени пользователя. Я пытался использовать [\ W] +, но это не сработало.

       <?php

$usernerr = "";
$passwerr = "";
$usern = "";
$passw = "";
$pattern = '/[\'\/~`\!@#\$%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(empty($_POST['uname']))
{
$usernerr = "*Please add a username please!";
}
else
{
$usern = clearInput($_POST['uname']);
if(!preg_match('/s/', $usern) || !preg_match($pattern, $usern))
{
$usernerr = "*Username have only letters and numbers!";
}
$usernerr = "";
}

if(empty($_POST['psw']))
{
$passwerr = "*Please add a password please!";
}
else
{
$passw = clearInput($_POST['psw']);
$passwerr = "";
}
}

function clearInput($input)
{
$input = trim($input);
$input = stripslashes($input);
$input = htmlspecialchars($input);
return $input;
}
?>

0

Решение

Учитывая сообщение об ошибке, которое вы написали, вы усложняете себя.

Вместо поиска списка символов, которые не являются буквенно-цифровыми, ищите только буквенно-цифровые символы. Попробуйте использовать этот шаблон, и не отрицайте условие.

$pattern = "/^[a-zA-Z0-9]+$/";
// Some code...
if(preg_match($pattern, $usern))
// ^-------------------------------Notice the changes
{
//Username is valid
}

Описание шаблона:

^ с самого начала

[a-zA-Z0-9] поиск по альфа-номеру

+ 1 или более раз

$ к концу

/^[a-zA-Z0-9]+$/можно заменить на /^[[:alnum:]]+$/ или же /^[a-z\d]+$/i которые производят тот же эффект.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector