изменение данного URL для возврата только домена

Я получаю URL из формы, таким образом:

$input_website = isset($_POST['website']) ? check_plain($_POST['website']) : 'None';

Мне нужно вернуть голое доменное имя (для некоторой интеграции API), например: http://www.example.com вернется как example.com
а также www.example.com вернусь example.com и т.п.

У меня есть этот код сейчас, который возвращает правильный URL для первого случая http://www.example.com но ничего не возвращает за www.example.com или даже example.com:

function get_domain($url)
{
$pieces = parse_url($url);
$domain = isset($pieces['host']) ? $pieces['host'] : '';
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
return $regs['domain'];
}
return false;
}

Можете ли вы дать совет по этому вопросу?

0

Решение

В соответствии с обсуждением с вами:

$url = 'www.noamddd.com';
$arrUrl = explode("/", $url);
echo $arrUrl[0];

Старый ответ:

Сделайте функцию со следующим блоком кода и получите доменные имена.

Попробуй это

больше о parse_url

$url = 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html';
$parse = parse_url($url);
print $parse['host']; //google.com

Также вы можете сделать это по-другому:

echo $domain = str_ireplace('www.', '', parse_url($url, PHP_URL_HOST));//google.com
2

Другие решения

Если у вас есть только URL (и не хотите, чтобы текущее имя домена, например, Фрейн-konok предлагает) и хотите извлечь имя сервера, вы можете использовать регулярное выражение, как это:

$serverName = preg_replace('|.*?://(.*?)/.*|', '$1', $url);
0

Я закончил тем, что сделал немного другое — проверяя, есть ли http, и если нет, я добавляю это, используя эту функцию:

function addHttp($website) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $website;
}

и только тогда я отправляю его моей другой функции, которая возвращает домен.
Конечно, не лучшим образом, но это работает.

0
По вопросам рекламы [email protected]