更改给定的URL以仅返回域

时间:2016-05-03 09:39:41

标签: php parse-url

我从表单中获取了一个网址,这样:

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

我需要取回一个裸域名(用于某些API集成),例如: http://www.example.com 将返回 example.com 并且 www.example.com 将返回 example.com 等。

我现在有了这个代码,它会为第一个案例 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;
}

你能就此事提出建议吗?

3 个答案:

答案 0 :(得分:2)

根据与您的讨论:

$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

答案 1 :(得分:0)

如果您只有URL(并且不希望当前域名如frayne-konok建议)并且想要提取服务器名称,则可以使用这样的正则表达式:

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

答案 2 :(得分:0)

我最终做了一些不同的事情 - 检查是否有http,如果没有,我正在使用此功能添加它:

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

然后才将它发送到我的其他返回域名的函数。 肯定不是最好的方式,但它的工作原理。