如何使用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'])));