0

我通过这种方式从表单中获取 url:

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

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

我现在有这段代码,它为第一种情况 http://www.example.com返回正确的 url,但不返回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;
}

你能就此事提出建议吗?

4

3 回答 3

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
于 2016-05-03T09:43:58.880 回答
0

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

$serverName = preg_replace('|.*?://(.*?)/.*|', '$1', $url);
于 2016-05-03T09:46:26.080 回答
0

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

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

然后我才将它发送到我的另一个返回域的函数。当然不是最好的方法,但它确实有效。

于 2016-05-05T12:03:36.757 回答