|
|
|
| Собственно такой вопрос:
Есть список Урл"ов
http://www.site1.ru/?id=345
http://site2.ru/?url=news
http://site5.ru
http://site3.ru/news/
http://site4.ru/
подскажите как при помощи регулярных выражений,
полуить из списка те урл'ы которые соответствуют виду:
http://имя сайта.ru/ или http://www.имя сайта.ru/ | |
|
|
|
|
|
|
|
для: webarray
(03.07.2007 в 11:52)
| |
Можно использовать таке регулярное выражение, должно работать. | |
|
|
|
|
|
|
|
для: webarray
(03.07.2007 в 11:52)
| |
preg_match_all("#http://([a-z0-9][-a-z0-9]*[a-z0-9]\.)+ru/\s#i", $text, $regs);
|
Nemezis, нет ... такое правильно работать не будет... | |
|
|
|
|
|
|
|
для: kasmanaft
(03.07.2007 в 15:08)
| | Почему то не работает..
Проверял вот так:
<?
$url = "http://www.mysite.ru/";
preg_match_all("#http://([a-z0-9][-a-z0-9]*[a-z0-9]\.)+ru/\s#i", $url, $regs);
print_r($regs);
?>
|
| |
|
|
|
|
|
|
|
для: webarray
(06.07.2007 в 09:38)
| |
$url = "http://www.mysite.ru";
preg_match_all("#http://[www]{3}.[a-z0-9]*+\.ru$#", $url, $regs);
print_r($regs);
|
| |
|
|
|
|
|
|
|
для: Faraon
(06.07.2007 в 10:07)
| | А если ссылка будет такого вида
http://site1.narod.ru то как тогда? | |
|
|
|
|
|
|
|
для: webarray
(06.07.2007 в 11:18)
| |
$url = "http://www.test.mysite.ru";
preg_match_all("#^(http://[w]*\.*.*\.ru)$#", $url, $regs);
print_r($regs);
|
| |
|
|
|
|
|
|
|
для: webarray
(06.07.2007 в 09:38)
| | > Почему то не работает
После урла должен стоять пробел... А о конце строки я что-то не подумал :)
Замените "\s" на "(\s|$)"
Результат в $regs[0] | |
|
|
|
|
|
|
|
для: kasmanaft
(06.07.2007 в 13:31)
| | Не тут проблема другая..
если урл - это домен 3 уровня, т.е через точку. http://site.narod.ru/..
и еще проблема:
http://site1.ru/?url=http://site2.ru/ - такую строчку тоже определяет правильно по маске http://******.ru
то как это все учесть в одном рег выражении? | |
|
|
|
|
|
|
|
для: webarray
(06.07.2007 в 13:41)
| | > если урл - это домен 3 уровня, т.е через точку. http://site.narod.ru
С этим проблем не должно быть
> http://site1.ru/?url=http://site2.ru/ - такую строчку тоже определяет правильно
Да.. отсюда http://site2.ru/ выберет.. добавте (\s|^) в начало рег выражения, если такой урл надо пропустить. | |
|
|
|
|
|
|
|
для: webarray
(06.07.2007 в 13:41)
| | То выражение, которое я написал вначале, должно вам подойти:
<?
$url = "http://site1.site0.ru";
preg_match_all("#^http://([www]?.+\.ru)$#i", $url, $regs);
echo $regs['1']['0'];
?>
|
http://site1.ru/?url=http://site2.ru/ - не пропустит.
http://site1.site.ru - пропустит.
http://www.site1.site.ru - пропустит.
http://www.site.ru - пропустит.
Так ведь надо ? | |
|
|
|