如何使用PHP获取第一个子域?

如何使用PHP获取第一个子域?,php,subdomain,Php,Subdomain,我有一个静态域dev.example.com,其中包含通配符子域,如so*.dev.example.com 我需要检测当前通配符子域的名称。那么,如果我在浏览sub.dev.example.com如何获得“sub” 目前,它返回dev。我需要它返回sub 我认为这里的最佳实践是返回最低级的域(第一个子域) 请注意,我不是在解析URL,而是在解析给定的域。这里有一个小函数可以解决这个问题。 $domain = 'sub.dev.example.com'; $tmp = explode('.', $

我有一个静态域
dev.example.com
,其中包含通配符子域,如so
*.dev.example.com

我需要检测当前通配符子域的名称。那么,如果我在浏览
sub.dev.example.com
如何获得“sub”

目前,它返回
dev
。我需要它返回
sub

我认为这里的最佳实践是返回最低级的域(第一个子域)


请注意,我不是在解析URL,而是在解析给定的域。

这里有一个小函数可以解决这个问题。
$domain = 'sub.dev.example.com';
$tmp = explode('.', $domain);
$subdomain = current($tmp);
print($subdomain);     // prints "sub"
只需将$\u SERVER['HTTP\u HOST']插入函数,您就可以得到您想要的

function getSubDomain ($domain) {
    $eDom = explode('.', $domain);
    return $eDom[0];
}

echo getSubDomain('sub.dev.example.com'); // echo 'sub' 
我认为使用函数是更好的方法:

getUrlSubdomain($url){
    $urlSegments = parse_url($url);
    $urlHostSegments = explode('.', $urlSegments['host']);

    if(count($urlHostSegments) > 2) {
        return $urlHostSegments[0];
    }
    else{
        return null;
    }
}

在PHP5.3中,可以将strstr()与true参数一起使用

echo strstr('sub.dev.example.com', '.', true); //prints sub

这是这个问题的另一个简单解决方案

echo array_shift((explode(".",$_SERVER['HTTP_HOST'])));
echo array_shift((explode(".",$_SERVER['HTTP_HOST'])));