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
Форумы портала PHP.SU :: Версия для печати :: preg_match проверка email
Форумы портала PHP.SU » PHP » Программирование на PHP » preg_match проверка email

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

1. Arch-Web - 14 Февраля, 2011 - 21:40:21 - перейти к сообщению
Такой вопрос, есть такой иф

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,})$/
- так не работает =(
2. OrmaJever - 14 Февраля, 2011 - 21:47:37 - перейти к сообщению
Может стандартный валидатор подойдёт?
http://ua.php.net/filter_var
3. movEAX - 14 Февраля, 2011 - 21:59:48 - перейти к сообщению
а просто strlen добавить религия не позволяет? =)
4. Arch-Web - 14 Февраля, 2011 - 22:00:59 - перейти к сообщению
movEAX сейчас так и стоит =) но хотелось бы оптимизировать =)
(Добавление)
OrmaJever пишет:
Может стандартный валидатор подойдёт?
http://ua.php.net/filter_var


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

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

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


нет, длина всего е-мейла (с доменом)
7. Okula - 14 Февраля, 2011 - 23:40:30 - перейти к сообщению
Ну так заюзай функцию 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. }
8. kochan10 - 15 Февраля, 2011 - 00:23:10 - перейти к сообщению
А не лучше в условиях 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;
9. Okula - 15 Февраля, 2011 - 00:57:49 - перейти к сообщению
kochan10, можно и так. Так даже лучше Улыбка
10. Мелкий - 15 Февраля, 2011 - 08:55:50 - перейти к сообщению
Ну и в порядке экономии на спичках:
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 отработает быстрее, а если она не не удовлетворит требованию, то регулярка и вовсе не вызовется.
11. movEAX - 15 Февраля, 2011 - 11:29:29 - перейти к сообщению
На мой взгляд, даже 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
12. Телевизор - 13 Марта, 2011 - 01:13:05 - перейти к сообщению
я буквально недавно тоже интересовался на проверку количества символов ввода...
Если учитывать доменый РФ с кириллицей или же просто использовать кириллицу то как описывалось в En статье, описывали - что к примеру если в кодировке urf-8 написать Aleksandra - (латинский алфавит) эт буит весить 10 байт, а если написать по русски Александра - (кирилица) эт уже будет 20 байт, по этому я думаю strlen не всегда выход в таком случае... В кепке а регулярные выражение более практичны
13. Joo - 13 Марта, 2011 - 04:58:21 - перейти к сообщению
Вполне достаточно, не нужно дополнительно на 6 символов проверять:
PHP:
скопировать код в буфер обмена
  1. function email_format($email) {
  2.    return preg_match("~^([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9])+$~i", $email);
  3. }
14. kulja - 06 Января, 2013 - 20:06:45 - перейти к сообщению
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.  
15. Саныч - 06 Января, 2013 - 20:16:36 - перейти к сообщению
kulja
0. код бред. Как минимум - return preg_match( ... );
1. регулярка бред. Под нее спокойно подойдет к примеру такая строка: "...@.......ru"
2. все уже давно придумано - filter_var()

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

 

Powered by ExBB FM 1.0 RC1