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 :: preg_match проверка email

 PHP.SU

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


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

> Без описания
Arch-Web
Отправлено: 14 Февраля, 2011 - 21:40:21
Post Id



Частый гость


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


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




Такой вопрос, есть такой иф

PHP:
скопировать код в буфер обмена
  1. if(!preg_match("/^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$/", $this->email))


тут всё гуд но я хочу еще указать что длина е-мейла должна быть не мешьне 6 символов

Цитата:
/^(([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6}){6,})$/
- так не работает =(
 
 Top
OrmaJever Модератор
Отправлено: 14 Февраля, 2011 - 21:47:37
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Может стандартный валидатор подойдёт?
http://ua.php.net/filter_var


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
movEAX
Отправлено: 14 Февраля, 2011 - 21:59:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


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




а просто strlen добавить религия не позволяет? =)


-----
армия.. самое убогое место
 
 Top
Arch-Web
Отправлено: 14 Февраля, 2011 - 22:00:59
Post Id



Частый гость


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


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




movEAX сейчас так и стоит =) но хотелось бы оптимизировать =)
(Добавление)
OrmaJever пишет:
Может стандартный валидатор подойдёт?
http://ua.php.net/filter_var


хм... не работал с этой функцией, багов нету ?
 
 Top
Okula
Отправлено: 14 Февраля, 2011 - 22:11:25
Post Id



Участник


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


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




Arch-Web, всё зависит от версии PHP которую юзаешь. В каких-то версиях баги с этой функцией были, да и по скорости работает она так же как и регулярка. Да и регулярка понадёжнее, как-никак сам писал и видно какие параметры пропускает. Это лично моё мнение.
Arch-Web пишет:
я хочу еще указать что длина е-мейла должна быть не мешьне 6 символов

всмысле? например test@mail.ru (итак уже 12 символов) или тебе длинну домена надо подсчитать?
mail.ru (тут 7 символов)
ты уж определись что тебе нужно конкретно.
 
 Top
Arch-Web
Отправлено: 14 Февраля, 2011 - 22:14:14
Post Id



Частый гость


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


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




Okula пишет:

всмысле? например test@mail.ru (итак уже 12 символов) или тебе длинну домена надо подсчитать?
mail.ru (тут 7 символов)
ты уж определись что тебе нужно конкретно.


нет, длина всего е-мейла (с доменом)
 
 Top
Okula
Отправлено: 14 Февраля, 2011 - 23:40:30
Post Id



Участник


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


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




Ну так заюзай функцию strlen()
Что-то типа такого:
PHP:
скопировать код в буфер обмена
  1. function email_format($email) {
  2. if(preg_match("~^([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9])+$~i", $email) !== 0) {
  3. if(strlen($email) < 6) return FALSE; else return TRUE;
  4. } else { return FALSE; }
  5. }
 
 Top
kochan10
Отправлено: 15 Февраля, 2011 - 00:23:10
Post Id


Гость


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


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




А не лучше в условиях if использовать and, а не if в if'е?
PHP:
скопировать код в буфер обмена
  1. function email_format($email) {
  2. if((preg_match("~^([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9])+$~i", $email) !== 0) and (strlen($email) >= 6)) return TRUE; else return FALSE;
 
 Top
Okula
Отправлено: 15 Февраля, 2011 - 00:57:49
Post Id



Участник


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


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




kochan10, можно и так. Так даже лучше Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 15 Февраля, 2011 - 08:55:50
Post Id



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


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


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




Ну и в порядке экономии на спичках:
function email_format($email) {
PHP:
скопировать код в буфер обмена
  1. if((strlen($email) >= 6) && (preg_match("~^([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9])+$~i", $email) !== 0)) return TRUE; else return FALSE;

strlen отработает быстрее, а если она не не удовлетворит требованию, то регулярка и вовсе не вызовется.


-----
PostgreSQL DBA
 
 Top
movEAX
Отправлено: 15 Февраля, 2011 - 11:29:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


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




На мой взгляд, даже strlen тут нафиг не нужен)

Давайте посчитаем:
CODE (htmlphp):
скопировать код в буфер обмена
  1. ^([a-z0-9_\.-]+) # как минимум один символ
  2. @                     # 1 символ
  3. ([a-z0-9_\.-]+)   # как минимум один символ
  4. \.                     # 1 символ
  5. ([a-z\.]{2,6})     # как минимум 2 символа


А теперь несложные математические вычисления: 1 + 1 + 1 + 1 + 2 = 6


-----
армия.. самое убогое место
 
 Top
Телевизор
Отправлено: 13 Марта, 2011 - 01:13:05
Post Id



Посетитель


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


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




я буквально недавно тоже интересовался на проверку количества символов ввода...
Если учитывать доменый РФ с кириллицей или же просто использовать кириллицу то как описывалось в En статье, описывали - что к примеру если в кодировке urf-8 написать Aleksandra - (латинский алфавит) эт буит весить 10 байт, а если написать по русски Александра - (кирилица) эт уже будет 20 байт, по этому я думаю strlen не всегда выход в таком случае... В кепке а регулярные выражение более практичны

(Отредактировано автором: 13 Марта, 2011 - 01:14:03)

 
 Top
Joo
Отправлено: 13 Марта, 2011 - 04:58:21
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: Казахстан


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




Вполне достаточно, не нужно дополнительно на 6 символов проверять:
PHP:
скопировать код в буфер обмена
  1. function email_format($email) {
  2.    return preg_match("~^([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9])+$~i", $email);
  3. }


-----
"Им будет не просто, тем кто полагается на истину авторитета, вместо ​того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
 
 Top
kulja
Отправлено: 06 Января, 2013 - 20:06:45
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2013  


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




PHP:
скопировать код в буфер обмена
  1.  
  2. function email_format($email) {
  3.     (!preg_match("~^([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9])+$~i", $email)) ? return true : return false;
  4. }
  5.  

(Отредактировано автором: 06 Января, 2013 - 20:09:07)

 
 Top
Саныч Модератор
Отправлено: 06 Января, 2013 - 20:16:36
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




kulja
0. код бред. Как минимум - return preg_match( ... );
1. регулярка бред. Под нее спокойно подойдет к примеру такая строка: "...@.......ru"
2. все уже давно придумано - filter_var()

И последнее, пункт правил 1.16. - Запрещается создание новых сообщений в устаревших (более 1 года со дня последнего сообщения) темах, только если пост не содержит чего-то качественно нового и определенно интересного всем участникам конференции.
На первый раз вам устное предупреждение! И почитайте на досуге правила.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB