Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проверка ника

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
firya
Отправлено: 13 Июля, 2010 - 19:00:31
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Доброго времени суток.
Нужно разрешить в нике использовать только латинские буквы люого регистра, цифры, "_" и "-", желательно: последние два символа только в центре.
Пишу следующее выражение, вроде работает допуск латинских був и цифр
CODE (htmlphp):
скопировать код в буфер обмена
  1. ereg("^[a-zA-Z0-9]+$", $text)

добавляю
CODE (htmlphp):
скопировать код в буфер обмена
  1. ereg("^[a-zA-Z0-9\_\-]+$", $text)

не работает, не подскажите что я делаю не так?
 
 Top
qbik
Отправлено: 13 Июля, 2010 - 19:25:34
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match("/^[A-Za-z0-9]+[-_]*[A-Za-z0-9]+$/", $text,$m);
  2. echo $m[0];
 
 Top
Uchkuma
Отправлено: 13 Июля, 2010 - 19:33:03
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Во-первых, используйте preg_match вместо ereg, т.к. в последующих версиях php он будет убран.
Во-вторых, как мне кажется, ваш вариант должен работать, но знаки "_" и "-" экранировать в данном случае не нужно.
Могу посоветовать такую регулярку:
PHP:
скопировать код в буфер обмена
  1. preg_match("/^[a-z0-9]+(?:[_-][a-z0-9]+)*$/i", $text);


Такого вида ники будут запрещены:
Nickname_
_Nickname
Nick__name
Nick--name

Такого разрешены:
Nick-name
Nick_name
My-nick-name

Ну и пробелы тоже запрещены.
 
 Top
firya
Отправлено: 13 Июля, 2010 - 19:59:37
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




qbik, спасибо
Uchkuma, большое спасибо, то что нужно, все понял, кроме двоеточия, для чего оно?
 
 Top
Uchkuma
Отправлено: 13 Июля, 2010 - 20:31:13
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Скобки в регулярке используются как для группировки, так и для указания подмаски. То что попадает в эту подмаску, записывается в массив вхождений, если указать третий параметр в функции preg_match. Чтобы то, что в скобках не учитывалось как подмаска, ее можно отключить, поставив после открывающей скобки ":?". Т.е. группа будет выглядеть так "(:? ...)". В вашем случае на работу функции это никак не повлияет - можно отключить, можно нет. У меня привычка - все, что не используется - отключить! =)
 
 Top
JustUserR
Отправлено: 14 Июля, 2010 - 02:21:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Uchkuma пишет:
Чтобы то, что в скобках не учитывалось как подмаска, ее можно отключить, поставив после открывающей скобки ":?".
Вообще нужно использовать незапоминающие круглые скобки везде где не требуется сохранять значение в них - это не только помогает очистить массив совпадений от ненужных значений но и экономит ресурсы на создание обратных ссылок


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB