Я получаю 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;
}
Можете ли вы дать совет по этому вопросу?
В соответствии с обсуждением с вами:
$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
Если у вас есть только URL (и не хотите, чтобы текущее имя домена, например, Фрейн-konok предлагает) и хотите извлечь имя сервера, вы можете использовать регулярное выражение, как это:
$serverName = preg_replace('|.*?://(.*?)/.*|', '$1', $url);
Я закончил тем, что сделал немного другое — проверяя, есть ли http, и если нет, я добавляю это, используя эту функцию:
function addHttp($website) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $website;
}
и только тогда я отправляю его моей другой функции, которая возвращает домен.
Конечно, не лучшим образом, но это работает.