я хочу, чтобы php-код не позволял пользователям в поле регистрации имени пользователя в drupal использовать более одного пробела.
Имя пользователя не должно содержать более одного пробела.
пожалуйста помоги
Первое, что вы хотите сделать, это использовать отделка():
обрезать — убрать пробел (или другие символы) из начала и конца строки
На самом деле вы хотите принять такие имена пользователей, как '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 — подсчитывает количество вхождений подстроки
Я думаю, вам не нужно preg_match для этого. Это может быть достигнуто с substr_count как это:
if( substr_count( $username, ' ' ) > 1)
echo 'Wrong username';