регулярка проверки адреса сайта

1. Саня (30.01.2010 / 18:44)
Вопщем я в регулярках неоч разбираюсь (
Помогите плиз составить регулярку для проверки вида site.ru ( желательно через preg_match)

2. Саня (30.01.2010 / 18:45)
или помогите поправить это чюдо что я пытался составить smile
preg_match('/^[a-z0-9\_]{2,33}+\.[a-z]{2,4}+/i',$serves)

3. ramzes (30.01.2010 / 20:27)
Возьми из мотора, она стандартная, везде одинаково идетsmile

4. Саня (30.01.2010 / 21:13)
3. ramzes, неохота с мотора брать..
ну что-то есть..
preg_match('#^http://([a-z0-9_\-\.])+(\.([a-z0-9\/])+)+$#',$site)

5. Саня (30.01.2010 / 21:22)
Вот починил свой вариант
preg_match('/^[a-z0-9\-\_]{2,33}+\.[a-z]{2,4}+$/i',$serves)
и вот вариант с мотора
preg_match('#^([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#',$serves)
Ну вопщем все тода...

6. ramzes (30.01.2010 / 21:26)
<?
if(preg_match('|^http:\/\/([a-z0-9\-\.]+)?[a-z0-9\-]{2,30}\.[a-z]{2,5}$|i',$site)){
я тоже в них путаюсьsmile попробуй вот так (...)? -если не только второго уровня домены пропускать.

7. Саня (30.01.2010 / 22:15)
Пасиб это то что нужно! Блин фигня какаято немогу + поставить .

8. ramzes (30.01.2010 / 22:19)
Не за чтоsmile работает хоть? А то у меня вечно с синтаксисом в регулярках проблемы))

9. Саня (30.01.2010 / 22:48)
8. ramzes, Вроде работает smile Регулярки ваще такая штука - запутаться раз плюнуть D

10. Удаленный (04.02.2010 / 04:18)
Первым делом — необязательный протокол (http:// или https://), затем последовательность букв, цифр, дефисов, подчёркиваний и точек (домены уровня > 1), потом домен нулевого уровня (от 2 до 6 букв и точек) и, наконец, файловая структура — набор слов из букв, цифр, дефисов, подчёркиваний и точек со слэшем в конце. Всё это может завершаться опять-таки слэшем.
Паттерн: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
а лучше так — /^(https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?$/

11. ramzes (04.02.2010 / 12:58)
«адреса сайта» а не ссылки на страницу/файл.

12. blud (26.02.2010 / 00:25)
подскажите как можно проверить регуляркой сайт чтобы проходило вот такой вид ссылки sait.ru/index?id=23
и такую sait.net.ru/index.php?rid=23

13. RomenLAD (27.02.2010 / 16:29)
preg_match('~(http:\/\/)?sait(\.net)?\.ru\/index\.php\?(r)?id=23~i'. $p);

14. ramzes (16.04.2010 / 02:24)
$str = preg_replace_callback('~\\[url=(http://.+?)\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'url_replace', $str);
регулярка. Цепляет в ссылку знали " и < > как этого избежать? (в тексте используются хтмл эквиваленты этих символов)

15. Azzido (16.04.2010 / 07:25)
$str=preg_replace_callback('~\\[url=(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~','url_replace',$str);

16. ramzes (16.04.2010 / 23:16)
16 я как бы знаком с регулярками, я не могу понять почему цепляет и как избежать.. То есть в конкретном примере ^ проблема и все.

17. Azzido (17.04.2010 / 00:23)
Я просто тупо скопировал из второго шаблона. Ведь если перед этим кодом применять htmlsprcialchars то собственно этих символов < > не будет. Откуда им там появиться.А если же html эквивалент в сылку затешется то ссылка не отобразится как ссылка, то есть это его проблемы будут.

18. Azzido (17.04.2010 / 00:24)
пользователя который ее писал

19. ramzes (17.04.2010 / 00:42)
20 когда код пишешь, например граб, адрес сайта подсвечивается как ссылка, и цепляет кавычки. То же самое с <a href="http://site.ru">site</a> пользователь ни при чем, косяк регулярки

20. ramzes (17.04.2010 / 00:43)
Собственно баг ^^ на лицо гг))

21. Удаленный (17.04.2010 / 04:50)
<?php 
function vurl($url) {
$url = trim ( preg_replace ("/[ˆ\x20-\xFF]/", "", @strval ($url)));
if ( strlen ($url) == 0) { return error; }
if ( !preg_match ("~ˆ(?:( ?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}".
"(?::[a-z0-9_-]{1,32})?@)?)?(?:( ?:[a-z0-9-]{1,128}\.)+(?:com|net|".
"org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:( ?".
"!0[ˆ.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&".
"?+=\~/-]*)?(?:#[ˆ '\"&<>]*)?$~i",$url,$ok)) { return error; } 
if ( !strstr ($url,"://")) $url = "http://".$url;
$url = preg_replace ("~ˆ[a-z]+~ie", "strtolower('\\0')", $url);
return $url;
}
    // ранее $url получен нами из формы
$url = vurl ($url);
if ($url != 'error'){ print "URL введен правильно";}
?>


22. ramzes (17.04.2010 / 13:18)
тру, глянь внимательно на тут регулярку что я привел ранее, она проще но суть та же, проблема в &amp; ", не в & " <>, хтмлсущности, или как их там, в текстеsmile твоя регулярка будет ломать &amp; &quot на & и amp;

23. Артур (18.04.2010 / 11:42)
25, да его функция вообще бред

24. Удаленный (18.04.2010 / 13:36)
Fuelen (Сегодня / 11:42)
25, да его функция вообще бред
Напиши не бред.

25. Артур (18.04.2010 / 15:36)
Зачем велосипед?
http://ua.php.net/manual/en/book.filter.php

26. ramzes (18.04.2010 / 15:47)
Fuelen, к чему этот офф? Есть конкретные вопрос, нет конкретного ответа проходи дальше, зачем тему засирать?
3.Ы. Не предлогая своего варианта не критикуй чужой.

27. Артур (18.04.2010 / 19:54)
29. ramzes, почему оффтоп? Мой вариант - юзать функцию filter_var() и флаги фильтрации/проверки URL.
А почему его функция бред?
Я так и не понял: это функция фильтрации или валидации? Если валидации, то должна возвращать TRUE/FALSE.
Первый раз вижу, чтобы при ошибке возвращали неизвесную константу error, а не булевое значение FALSE.
if(strlen($url) == 0) лучше заменить на if($url == NULL). Шаблон во второй регулярке страшный.
if ( !strstr ($url,"://")) $url = "http://".$url;
strstr возвращает строку или FALSE. Правильно так
if (strstr ($url,"://") !== FALSE)

28. Артур (18.04.2010 / 20:04)
Это вообще вынос мозга
$url = preg_replace ("~ˆ[a-z]+~ie", "strtolower ('\\0')", $url);

29. ramzes (18.04.2010 / 20:14)
Не так ты понял, не надо другой функции, вопрос 'почему регулярка цепляет хтмл сущности "<> символов'. Я разобраться хочу а не сменить подходsmile
// короче, поправишь шаблон регулярки, большое спасибо, нет так нетsmile

30. Артур (18.04.2010 / 20:35)
У тебя в шаблоне там типа такое [...&amp;...]
Между [] набор символов, а не слов

31. ramzes (18.04.2010 / 20:42)
Ну да, вот в этом и проблема. На &amp; надо что бы реагировало, а на " нет. Как сделать? А то реагирует на все что с & начинается и ; кончается. Тут на форуме точно такой же баг, я проверял

32. Артур (18.04.2010 / 21:22)
Я не знаю как сделать с помощью регулярки.
Там же с функцией обратного вызова регулярка? В функции проверяй, есть ли в URL ". Если нет - подсвечивай

33. ramzes (18.04.2010 / 21:47)
Блин, я тогда наверное &amp; буду заменять на другой набор символов
Что бы из регулярки его убрать..
засада, походу придется с этими фильтрами разбиратьсяsmile

34. Сергей (08.06.2010 / 21:20)
а на фильтрацию именно регулярку можно.

/biblio/pages.php?strnum=значение&SES=значение

чтоб пропускало только /biblio/pages.php?strnum=значение

35. Сергей (08.06.2010 / 22:45)
<a href=\"(/biblio/pages.php\\?strnum=([0-9]{1,})).*\"> разобрался

36. blud (22.06.2010 / 12:33)
люди подскажите как сделать проверку сайта если пишут в форме сайт sait.ru/inid.php?=15 а мне надо чтоб после слеша все вырезалось и выводилось просто sait.ru

37. ramzes (22.06.2010 / 13:24)
preg_match('/([a-z\d\-]{3,50}\.(ru|su|us|net|com|org|biz|info|name|kz|tj|uk|cc)).*?\s/is', $site, $message);
print_r($site);
типа того. Если тебе надо отловить ссылки

URL: https://visavi.net/topics/5548