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

Форум Регулярные Выражения

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

 

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

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

тема: Регулярные выражения для проверки правильности введенного URL
 
 автор: b00m   (12.07.2007 в 16:10)   письмо автору
 
 

Вобщем проблема такая... Необходимо проверить корректность введенного пользователем адреса сайта. Ну т.е. типа чтоб не ввели что-нить вроде wwwmysite.com вместо www.mysite.com ну и т.п.

Пробовал изменять найденные в этом форуме решения но что-то не так.

Может кто-нибудь что-нибудь подскажет? Потому что вот это ^(http://)?(www\.)?([_0-9a-z-]+\.)+((ru)|(com)|(net)|(org)|(edu)|(uk))
не работает.

   
 
 автор: kasmanaft   (12.07.2007 в 18:44)   письмо автору
 
   для: b00m   (12.07.2007 в 16:10)
 

А чем wwwmysite.com хуже www.mysite.com? Почему его нельзя вводить?

   
 
 автор: provodnik   (13.07.2007 в 11:29)   письмо автору
 
   для: kasmanaft   (12.07.2007 в 18:44)
 

Мне пока помогает следующее:

<?
if(isset($_POST['url']) && $_POST['url'] != ""

    
$url $_POST['url']; 
    if (
preg_match('|[^-a-z0-9_\.\:\/]|i'$url))
    { 
        echo 
"Введите нормальный URL"; die(); 
    } 

else 

    echo 
"Введите URL"; die();


$massiv parse_url($url);
$url preg_replace("/(http:\/\/|www\.)/""""$massiv[host]"); 
echo 
$url;
?>

В бд записываю имя сайта без http:// и www, а при выводе сам их добавляю

   
 
 автор: SHAman   (13.07.2007 в 12:05)   письмо автору
 
   для: provodnik   (13.07.2007 в 11:29)
 

Чет странная у вас проверка... Я бы проверял чем-то типа этого:

/^(http:\/\/)?(www\.)[_a-z0-9.-]+\.[a-z]{2,4}$/i

^ и $ - начало и конец строки соответственно. Без них будет очень ненадежно. Скажем, без ^ будет пропускать такое: "bebe-http://ya.ru"

(http:\/\/) и (www\.), думаю понятно для чего.
[_a-z0-9.-]+ - это разрешение на перечисленные символы, которые повторяются один или более раз. Можно вместо плюсика поставить более точное {2,}, что будет говорить о повторении этих символов два и более раз.
[a-z]{2,4} - это повторение буквенных символов от двух до 4 раз.

   
Rambler's Top100
вверх

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