Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Валидность URL и E-mail
 
 автор: PHPFan   (21.07.2005 в 21:46)   письмо автору
 
 

Для гостевой книги надо фишку по проверке валидности URL (когда пользователь указывает сайт) и E-mail.

Примерная логика:
Для URL
1) http:// и www если есть срубаем (легко :) )
Проверяем всего 2 комбинации слово.2или3символа; слово.2-3сивола.2-3символа (примеры domen.com domen.com.ru должны быть валидными). Остальное должно отсекаться.

Для E-mail тоже проверяем всего 2 комбинации
слово@слово.2-3символа, слово@слово.2-3символа.2-3символа
Примеры валидных: nick@domen.ru nick@domen.com.ru

Помогите пожалуйста с регекспами, туго совсем с ними :((

   
 
 автор: Саня_   (21.07.2005 в 22:12)
 
   для: PHPFan   (21.07.2005 в 21:46)
 

Для URL - http://php.spb.ru/php/url2.html
Для e-mail - http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3735&page=1

   
 
 автор: cheops   (21.07.2005 в 23:41)   письмо автору
 
   для: Саня_   (21.07.2005 в 22:12)
 

>http://www.softtime.ru/forum/read.php?id_forum=1?id_theme=3735&page=1
Если строка полностью состоит из одного e-mail, лучше заменить предложенное там регулярное выражение на
"/^[-0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,3}$/i"

   
 
 автор: cheops   (21.07.2005 в 22:49)   письмо автору
 
   для: PHPFan   (21.07.2005 в 21:46)
 

URL можно проверить при помощи регулярного выражения
"#http://[-a-z0-9_.]+\.(html?|php|pl|cgi)[-a-z0-9_:@&?=+,.!/~*'%$]*#i"

   
 
 автор: PHPFan   (22.07.2005 в 15:34)   письмо автору
 
   для: cheops   (21.07.2005 в 22:49)
 

> "#http://[-a-z0-9_.]+\.(html?|php|pl|cgi)[-a-z0-9_:@&?=+,.!/~*'%$]*#i"
Не работает :((
Этот регексп считает верным адрес http://ubd.php и др. подобные адреса.

для замены думаю применить вот такую конструкцию:
$text = preg_replace_callback(РЕГЕКСП, "regreplace", $text);
  function regreplace($matches) 
  { 
 //  $matches[1] - это как результат работы рег. выр.
 // и туточки производим нужные действия по замене
 // к примеру:
 $matches[1] = 'ReplaceString';
  }

На выходе функция должна модернизировать переменную $text заменив в ней по регулярному выражению (а точнее по функции regreplace) то что найдено, на то что требуется. По логике действий я правильно рассудил?
Для проверки URL будет использоваться вот такое выражение:
"/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/"

   
 
 автор: cheops   (22.07.2005 в 17:25)   письмо автору
 
   для: PHPFan   (22.07.2005 в 15:34)
 

Создать универсальное регулярное выражение для URL достаточно сложно, эту задачу обычно не решают - иначе получится очень монструозное выражение - приходят к какому-то компромису...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования