仅将给定的 url 更改为 return 域

changing a given url to return only the domain

我从表单中得到一个 url,这样:

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

我需要找回一个裸域名(为了一些API集成),例如:http://www.example.com将return作为example.comwww.example.com 将 return example.com 等等

我现在有了这段代码,第一种情况 return 是正确的 url http://www.example.com 但是 return 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(而不想要像frayne-konok建议的当前域名)并且想要提取服务器名称,你可以使用这样的正则表达式:

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

我最后做了一些不同的事情 - 检查是否有 http,如果没有,我使用这个函数添加它:

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

然后我才将其发送到 return 域的其他函数。 当然不是最好的方法,但它确实有效。