[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вытащить домен из строки.
jonic.ae
Доброго времени суток.

Необходимо вытащить домен из строки, в строке может быть все что угодно.
Перепробовал кучу разных регулярок, но все они хороши в отдельном случаи. Нужна универсальная, если точнее то:

http://domen.ru/ -> domen.ru
http://www.domen.ru/param? -> domen.ru
www.domen.ru/param? -> domen.ru
domen.ru -> domen.ru
domen.domen.ru ->domen.domen.ru
домен.рф -> домен.рф
http://домен.рф / -> домен.рф
....

Думаю понятно, что должна всегда возвращать только домен!



SerginhoLD
http://php.net/manual/ru/function.parse-url.php

_____________
"internet explorer всех правильней отображает страницы" ©
T1grOK
parse_url с русскоязычными доменами весьма проблематично работает.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
jonic.ae
"parse_url с русскоязычными доменами весьма проблематично работает."

ещё и www оставляет, нужна регулярка!
jonic.ae
готово
if (preg_match ("/^(http[s]{0,1}:\/\/){0,1}(www\.){0,1}([a-zA-Zа-яёА-ЯЁ0-9\-]+\.){1}([a-zA-Zа-яёА-ЯЁ0-9\-]+\.){0,1}([a-zA-Zа-яёА-ЯЁ]+){1}\/{0,1}.*$/u", $url, $h)) 
$host= $h[3].$h[4].$h[5];
FatCat
Цитата (jonic.ae @ 6.03.2015 - 10:51)
готово

subdomen.www.site.ru - что получится?


Не люблю регулярки: мало того, что код трудно читается, так еще и ресурсы жрут немерянно.
Я бы сделал так:
$domen = array();
$delim = FALSE;
$url = explode('/', $url);
foreach($url as $v)
{
if($delim)$domen[] = $v;
if(!$v)$delim = TRUE;
}
if(!$delim)$domen = $url;
$domen = explode(".", $domen[0]);
if($domen[0] == "www")unset($domen[0]);
$domen = implode(".", $domen);


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.