我有一个静态域dev.example.com
通配符子域,像这样*.dev.example.com
。
我需要检测当前通配符子域的名称。 所以,如果我浏览sub.dev.example.com
我怎么“分”?
$env_domain = dev.example.com;
$subdomain = array_shift( explode( '.', $_SERVER['HTTP_HOST'] ) ) .'.'. $env_domain;
echo $subdomain;
目前,这个返回dev
。 我需要它返回sub
。
我在这里想最好的做法是返回最低级别域(第一分区)。
请注意,我不解析URL,而是一个给定域。
$domain = 'sub.dev.example.com';
$tmp = explode('.', $domain);
$subdomain = current($tmp);
print($subdomain); // prints "sub"
这是问题的另一个简单的解决方案。
echo array_shift((explode(".",$_SERVER['HTTP_HOST'])));
我想用parse_url功能是更好的方法:
getUrlSubdomain($url){
$urlSegments = parse_url($url);
$urlHostSegments = explode('.', $urlSegments['host']);
if(count($urlHostSegments) > 2) {
return $urlHostSegments[0];
}
else{
return null;
}
}
这里有一个小功能将这样的伎俩。 只要坚持$ _ SERVER [“HTTP_HOST”]进入功能,你应该得到你想要的
function getSubDomain ($domain) {
$eDom = explode('.', $domain);
return $eDom[0];
}
echo getSubDomain('sub.dev.example.com'); // echo 'sub'
从PHP 5.3,你可以使用与真实参数的strstr()
echo strstr('sub.dev.example.com', '.', true); //prints sub
原始链接