Проверка валидности url и email

  • Автор темы Автор темы -faqer-
  • Дата начала Дата начала

-faqer-

Я только учусь
Проверка валидности url и email

Использую после сабмита формы следующее
PHP:
if(!preg_match("/^(http:\/\/([a-zA-Z0-9-])+(\.([a-zA-Z0-9-])+)*(\.([a-zA-Z0-9~\/])+)+)?$/",$site)){ $flag = 1; $err['site']="Адес в формате [url]http://www.somehost.com[/url]";}
if(!preg_match("/^(([a-zA-Z0-9_-])+\@([a-zA-Z0-9-])+(\.([a-zA-Z])+)+)?$/",$mail)){ $flag = 1; $err['mail']="Адес в формате [email][email protected][/email]";}

if (isset($flag))
{
.....
exit;
}
.....
Регулярные писал сам, вроде работает нормально, но явно чего-то не продумал
Поправьте пожалуйста, если есть ошибка
 
email может быть [email protected]


$flag = 0;
if...{$flag=1; ...}

if($flag)
{
}

а вообще регулярное выражение проверяющее валидность email занимает 6 кб.
 
Справедливо поправлю
а вообще регулярное выражение проверяющее валидность email занимает 6 кб.
Может быть, не мерял, а это собсно к чему

И еще может где-то можно стандартный паттерн найти
Если да, киньте ссылку плиз
 
>Может быть, не мерял, а это собсно к чему
а ты его видел ?
>Если да, киньте ссылку плиз
php.spb.ru
 
[m]preg_match[/m]
Там тебе будет всегда доступный проверенный паттерн в нотисах. Про новые домены наслышан :).
 
Джентельмены, у меня всего один вопрос: зачем?

Ну то есть чем все эти сложные выражение принципиально лучше, чем "/^\S+@\S+$/"? :)
 
>Джентельмены, у меня всего один вопрос: зачем?
не знаю :)

вообще , если это регистрация, то надо отсылать человеку письмо, с прозьбой подтвердить регистрацию.
 
Воистину. Наличие собаки в адресе есть смысл проверять -- некоторые пользователи (особенно -- привыкшие к внутрикорпоративной почте) пишут только левую часть -- до "@". Им нужно напомнить, что лажа вышла.

IMHO, ровно этим и ограничивается осмысленность проверки синтаксиса e-mail'а.

Но если уж приспичило проверять с такой дотошностью, то просто создается конечный автомат -- это будет куда проще и яснее, чем такие кошмарные regexp'ы... :)
 
Для проверки УРЛ можно обратиться к серверу по этому адресу и посмотреть ответ. Станет ясно есть ли такой УРЛ...
 
Сверху