我一直在努力争取一两个星期,我似乎无法解决它。这是我的剧本:
<?php
$Domain = $_SERVER['SERVER_NAME'];
$paryDomain = explode(".",$Domain);
$Array = count($paryDomain);
$RootDomain = "";
$G_SYSTEMID = "";
if ($Array == "1")
{
$RootDomain = $paryDomain[0].'.'.$paryDomain[1];
}
elseif ($Array == "2")
{
$RootDomain = $paryDomain[1].'.'.$paryDomain[2];
}
if ($RootDomain == "storeboard.com")
{
$G_SYSTEMID = 1;
}
elseif ($RootDomain == "dcwn.org")
{
$G_SYSTEMID = 2;
}
echo $G_SYSTEMID;
echo "------------";
?>
为什么我在结尾处得不到结果1或2 ..?
非常感谢任何帮助。
Neojakey
答案 0 :(得分:2)
if ($Array == 1)
{
$RootDomain = $paryDomain[0];
}
elseif ($Array == 2)
{
$RootDomain = $paryDomain[0].'.'.$paryDomain[1];
}
elseif ($Array == 3)
{
$RootDomain = $paryDomain[1].'.'.$paryDomain[2];
} else {
//to debug the possible cause
$G_SYSTEMID = 'Array length was equal to '.$Array;
$RootDomain = false;
}
你的数组计数与你使用的指针不匹配应该有帮助。你也在检查字符串而不是整数......
答案 1 :(得分:1)
$Array = count($paryDomain);
if ($Array == "1")
{
$RootDomain = $paryDomain[0].'.'.$paryDomain[1];
}
如果$Array
包含一个元素,则$paryDomain[1]
不存在,或者数组必须只包含一个元素。
表示关于$ Array的整数:
$Array = 1;
var_dump(($Array == "1"));
var_dump(($Array == "2"));
bool(true)
bool(false)
出了什么问题: 您的服务器名称(如果有)((。)?example.com):
if ($Array == "1")
{
$RootDomain = $paryDomain[0].'.'.$paryDomain[1];
}
elseif ($Array == "2")
{
$RootDomain = $paryDomain[1].'.'.$paryDomain[2];
}
由于
$paryDomain = explode(".",$Domain);
至少包含两个元素,然后,$ Array永远不等于一,只有在一种情况下,当SERVER_NAME是一个单词时!
解决方案:
if ($Array == "2")
{
$RootDomain = $paryDomain[0].'.'.$paryDomain[1];
}
elseif ($Array == "3")
{
$RootDomain = $paryDomain[1].'.'.$paryDomain[2];
}else{
}
if ($RootDomain == "storeboard.com")
{
$G_SYSTEMID = 1;
}
elseif ($RootDomain == "dcwn.org")
{
$G_SYSTEMID = 2;
}else{
//in case when none of above cases true
$G_SYSTEMID = 100;
}
答案 2 :(得分:1)
只是想向您展示一种更简单的方法。它将支持具有无限子域的域,因为它始终抓取最后两个部分:
if (strpos($_SERVER['SERVER_NAME'], ".") !== false) {
preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z]+)$/i', $_SERVER['SERVER_NAME'], $item);
$RootDomain = $item['domain'];
} else {
$RootDomain = $_SERVER['SERVER_NAME'];
}
switch ($RootDomain)
{
case 'storeboard.com':
$G_SYSTEMID = 1;
break;
case 'dcwn.org':
$G_SYSTEMID = 2;
break;
default:
$G_SYSTEMID = '';
break;
}
echo $G_SYSTEMID;
答案 3 :(得分:0)
首先回复你的$ Domain
echo $_SERVER['SERVER_NAME'];
然后print_r你的$ paryDomain
print_r($paryDomain);
如果这些是正确的,请回显你的计数()
echo count(explode(".",$_SERVER['SERVER_NAME']));
答案 4 :(得分:-1)
$G_SYSTEMID = strstr($_SERVER['SERVER_NAME'], 'storeboard.com') ? 1 : 2;