регулярка проверки адреса сайта
1.
Саня (30.01.2010 / 18:44)
Вопщем я в регулярках неоч разбираюсь (
Помогите плиз составить регулярку для проверки вида site.ru ( желательно через preg_match)
2.
Саня (30.01.2010 / 18:45)
или помогите поправить это чюдо что я пытался составить
preg_match('/^[a-z0-9\_]{2,33}+\.[a-z]{2,4}+/i',$serves)
3.
ramzes (30.01.2010 / 20:27)
Возьми из мотора, она стандартная, везде одинаково идет
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)){
я тоже в них путаюсь
попробуй вот так (...)? -если не только второго уровня домены пропускать.
7.
Саня (30.01.2010 / 22:15)
Пасиб это то что нужно! Блин фигня какаято немогу + поставить .
8.
ramzes (30.01.2010 / 22:19)
Не за что
работает хоть? А то у меня вечно с синтаксисом в регулярках проблемы))
9.
Саня (30.01.2010 / 22:48)
8.
ramzes, Вроде работает
Регулярки ваще такая штука - запутаться раз плюнуть
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/\?\.\~&_=/%-:#]*)~', '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/\?\.\~&_=/%-:#]*)~\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&_=/%-:#]*)~','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;
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)
Не так ты понял, не надо другой функции, вопрос 'почему регулярка цепляет хтмл сущности "<> символов'. Я разобраться хочу а не сменить подход
// короче, поправишь шаблон регулярки, большое спасибо, нет так нет
30.
Артур (18.04.2010 / 20:35)
У тебя в шаблоне там типа такое [...&...]
Между [] набор символов, а не слов
31.
ramzes (18.04.2010 / 20:42)
Ну да, вот в этом и проблема. На & надо что бы реагировало, а на " нет. Как сделать? А то реагирует на все что с & начинается и ; кончается. Тут на форуме точно такой же баг, я проверял
32.
Артур (18.04.2010 / 21:22)
Я не знаю как сделать с помощью регулярки.
Там же с функцией обратного вызова регулярка? В функции проверяй, есть ли в URL ". Если нет - подсвечивай
33.
ramzes (18.04.2010 / 21:47)
Блин, я тогда наверное & буду заменять на другой набор символов
Что бы из регулярки его убрать..
засада, походу придется с этими фильтрами разбираться
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