从URL获取域扩展?

时间:2013-07-05 11:12:47

标签: php

我想从网址获取域名扩展名。例如。 .com,.net等。

我用过这个:

$extension = pathinfo($_SERVER['SERVER_NAME'], PATHINFO_EXTENSION);

我只是想知道是否有更好的方法使用parse_url?

2 个答案:

答案 0 :(得分:9)

使用parse_url()。类似的东西:

$host = parse_url('http://www.google.co.uk/test.html');
preg_match('/(.*?)((\.co)?.[a-z]{2,4})$/i', $host['host'], $m);

$ext = isset($m[2]) ? $m[2]: '';

编辑:使用此answer的正则表达式修复。也支持像.co.uk这样的扩展。

答案 1 :(得分:-3)

您可以轻松地拆分请求的URI,如下所示:

function tld( $uri ) {
    $parts = explode('.', $uri);

    return (sizeof($parts) ? ('.' . end($parts)) : false;
}

所以你可以这样做:

if(!tld('googlecom')) // does not contain an ending TLD

if(tld('google.com')) // this is a valid domain name; output: ".com"

或者你可以使用:

echo $_SERVER['SERVER_NAME'];

因此,在我看来,最好的用法示例是:

echo tld($_SERVER['SERVER_NAME']);