Как запретить пользователю использовать пространство более одного раза с preg_match?

я хочу, чтобы php-код не позволял пользователям в поле регистрации имени пользователя в drupal использовать более одного пробела.

Имя пользователя не должно содержать более одного пробела.

пожалуйста помоги

1

Решение

Первое, что вы хотите сделать, это использовать отделка():

обрезать — убрать пробел (или другие символы) из начала и конца строки

На самом деле вы хотите принять такие имена пользователей, как 'Adam Sinclair ' с пробелом в начале или конце. Эта функция удалит их.

Затем с помощью preg_match ():

$pattern = '/( ).*( )/';
$username = 'Wrong Username containing more than one space';
if ($ret = preg_match($pattern, $username))
echo 'Wrong username\n';
else if ($ret !== false)
echo 'Good username\n';

$username = 'Adam Sinclair';
if (preg_match($pattern, $username))
echo 'Wrong username\n';
else  if ($ret !== false)
echo 'Good username\n';

Из PHP документация:

preg_match () возвращает 1, если шаблон соответствует заданному предмету, 0, если нет, или FALSE, если произошла ошибка.

Однако другой альтернативой будет использование substr_count ():

if (substr_count($username, ' ') > 1)
echo 'Wrong username\n';
else  if ($ret !== false)
echo 'Good username\n';

Из PHP документация:

substr_count — подсчитывает количество вхождений подстроки

2

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

Я думаю, вам не нужно preg_match для этого. Это может быть достигнуто с substr_count как это:

if( substr_count( $username, ' ' ) > 1)
echo 'Wrong username';
1

По вопросам рекламы [email protected]