我试过$_SERVER['HTTP_HOST']
& $_SERVER['SERVER_NAME']
,但他们都返回 sub.domain.com ,我希望它检查网址是 sub.domain.com ,还是 domain.com
脚本在sub.domain.com上运行,它们同时返回相同的数据。
$_SERVER['HTTP_HOST']
返回:sub.domain.com
$_SERVER['SERVER_NAME']
返回:sub.domain.com
我希望只获取网址的domain.com部分。由于脚本可以在任何子域名上运行,因此我不确定如何执行此操作,因为上述两个变量都返回相同的信息。
答案 0 :(得分:4)
我会检查HTTP_HOST。通常两者都相同,但有时SERVER_NAME的设置不同。如有疑问,请检查两者。
<强> 'HTTP_HOST'强>
当前请求的主机:标头的内容(如果有)。
http://php.net/manual/en/reserved.variables.server.php
至于如何检查它们,您可以在其上为主域名执行字符串替换,并查看结果字符串是否为空。剩下的任何东西都是子域名。
到目前为止,您正在寻找一些简单的字符串操作,这里是最后两部分:
$yourhost = implode('.', array_slice(explode('.', $_SERVER['HTTP_HOST']), -2));
答案 1 :(得分:0)
您可以尝试以下功能(在php.net上找到)
<?php
function getHost($Address) {
$parseUrl = parse_url(trim($Address));
return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path], 2)));
}
getHost("example.com"); // Gives example.com
getHost("http://example.com"); // Gives example.com
getHost("www.example.com"); // Gives www.example.com
getHost("http://example.com/xyz"); // Gives example.com
?>
答案 2 :(得分:0)
小脏 hack :
$explodedHost = explode('.', $_SERVER['HTTP_HOST']);
$size = count($explodedHost);
$domain = $explodedHost[$size - 2] . '.' . $explodedHost[$size - 1] . 'com';
if ($_SERVER['HTTP_HOST'] == $domain) {
// you are on domain.com
}