Forum Webscript.Ru

Программирование => PHP => Тема начата: Strannik от 07 Апреля 2004, 01:11:47

Название: Проверка правильности e-maila!
Отправлено: Strannik от 07 Апреля 2004, 01:11:47
Вот проверяю правильность введенного e-maila в форме,но мне пишет неправильно,если до собаки идет имя с "_" !
(пример: puper_mail@vasia.com)
Помогите плиз исправить код ниже дабі избежать этого:
if (!eregi("^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+([a-z,0-9]))+$",$mail)
Название: Проверка правильности e-maila!
Отправлено: Макс от 07 Апреля 2004, 01:20:07
Вот регексп, который меня еще не подводил (взято с pear::html::quickForm):
if (!preg_match(\'/^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/\', $email)) {
   echo "неправильно введен e-mail";
}
Название: Проверка правильности e-maila!
Отправлено: a@mail.dux.ru от 09 Апреля 2004, 16:47:27
Макс

чего то твой скрипт не заработал :(
пишет:
Warning: Compilation failed: range out of order in character class at offset 14

вот весь скрипт(на всяк. случай):
" METHOD="POST">
">



If($email<>"") {

   if (!preg_match(\'/^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$/\', $email)) {
   echo "неправильно введен e-mail";
   }
}
 ?>
Название: Проверка правильности e-maila!
Отправлено: hanslinger от 09 Апреля 2004, 16:51:48
Поставь перед точкой в квадратных скобках символ \\.
Название: Проверка правильности e-maila!
Отправлено: Макс от 09 Апреля 2004, 17:02:34
Наверное форум опять что-то свое добавил. Вот исходный регексп:
\'/^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/\'

PS
найти его можно в коде pear::html::quickForm
Название: Проверка правильности e-maila!
Отправлено: hanslinger от 09 Апреля 2004, 17:06:54
Форум, видимо, слеши порезал =)
Название: Проверка правильности e-maila!
Отправлено: a@mail.dux.ru от 09 Апреля 2004, 17:39:25
hanslinger

спасибо, заработало.

а что такое: коде pear::html::quickForm  ?

второй раз встречаю, но не понимаю, че это и где его искать.

Спасибо
Название: Проверка правильности e-maila!
Отправлено: hanslinger от 09 Апреля 2004, 17:47:45
http://pear.php.net
Кстати, перед "-" тоже поставь \\. Почитай ман про регулярные выражения.
Название: Проверка правильности e-maila!
Отправлено: a@mail.dux.ru от 09 Апреля 2004, 21:16:32
так вроде - это не служебный символ. и я чего-то не нашел, куда воткнуть еще один слэш, о котором ты пишешь:(

А про мануал: его еще понять надо. О чем там написано. Часто примеров нет. А без примера не доходит никак.
Вон по шелу хотел демп к mysql закачать. Так и в голову не пришло, что -pXXX это p надо оставлять, и что если оставлять, то между ним и паролем пробел ставить не надо :)
Название: Проверка правильности e-maila!
Отправлено: Strannik от 10 Апреля 2004, 00:46:04
Не знаю как у вас, а у меня работает только без всяких слешов!
В таком виде:
eregi("^([a-z,A-Z,0-9,_,-,.])+@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-z,A-Z,0-9,-,]+.)+))([a-z,A-Z]{2,4}|[0-9]{1,3})(]?)+$", $UserEmail))

Все нормпльно, а вот в словах ПЕРЕД собакой с тире(-) типа Vasya-Pupkin@vaisia.net пишет ошибку (при чем если писать _ или . то все нормально)! Пробовал ставить слеш, но не пашет!
What\'s the heck? Что же делать?
Название: Проверка правильности e-maila!
Отправлено: a@mail.dux.ru от 10 Апреля 2004, 01:41:21
Strannik
твой код я не пробовал, а вот тот, что сказал hanslinger - обрабатывает все правильно. даже твоего Vasya-Pupkin@vaisia.net
Название: Проверка правильности e-maila!
Отправлено: hanslinger от 10 Апреля 2004, 07:39:01
Как же это не служебный символ, когда "-" - определяет диапазон символов? В мане про регулярки написано настолько доходчиво, что понял даже я.

Strannik а со слешами не работает? :)

Вообще, я пользуюсь таким регекспом (составил даже сам!):

$domain_pattern="(ru|com|org|net|biz|info|pl|de|uk|ua|am|sk|gov|edu|lv)";
preg_match("/^([.a-zA-Z_0-9]+)\\\\@((([a-zA-Z_0-9]+)\\\\.)+)\\\\b".$domain_pattern."\\\\b$/",$mail);
Название: Проверка правильности e-maila!
Отправлено: Sniper от 13 Апреля 2004, 19:37:19
if (!eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\-\\.]+$", $mail)) {
print "емайл неправильный!!!"
}
Название: Проверка правильности e-maila!
Отправлено: hanslinger от 13 Апреля 2004, 19:57:24
Sniper
как тебе такой емайл: "----@------.-----."? Твой Eregi его проглотит и не задумается даже.
Название: Проверка правильности e-maila!
Отправлено: FreeSpace от 13 Апреля 2004, 21:16:39
Sniper
Никогда не понимал людей, которые пишут eregi и при этом в выражении ставят "[A-Za-z]".
Не говоря уже про то, что есть намного более шустрое семейство функций preg_*