0

我有一个工作代码来限制和验证子域。

 $exp = explode('.', 'blog.mydomain.my.');

 print_r($exp);
 if(count($exp) == 3 && $exp[1] == "mydomain" && $exp[2] == "my" || $exp[3] == "") {
    echo "<br>";
  echo 'subdomain valid';
 } else{
    echo "<br>";
  echo 'not valid';
 }

现在它需要检查它是否只是错误的,我对$exp[3] != ""比较不太确定。从下面的示例中,子域应该是有效的,但它给了我错误。

 echo "<br>";echo "<br>";
 $exp2 = explode('.', 'blog.mydomain.my.');

 print_r($exp2);
 if(count($exp2) != 3 || $exp2[1] != "mydomain" || $exp2[2] != "my" || $exp[3] != "") {
    echo "<br>";
  echo 'not valid';
 }

接受的子域数量是hello.mydomain.myhello.mydomain.my.(带有尾随点)。虽然hello.world.mydomain.my不被接受。

提前致谢

4

2 回答 2

2

这应该给你你想要的。

if(count($exp2) < 3 || count($exp2) > 4 || $exp2[1] != "mydomain" || $exp2[2] != "my" || (count($exp2) != 4 && $exp[3] != "")) {
  echo "<br>";
  echo 'not valid';
}
于 2013-08-02T18:07:35.840 回答
2

我会选择一个正则表达式解决方案,甚至可能encapsulate在一个函数中:

function isValidDomain($domain) 
{
  return preg_match('/^[\w]+\.(mydomain)\.(my)\.?$/', $domain) ? true : false;
}

var_dump(isValidDomain('www.google.com'));
var_dump(isValidDomain('test.invalid.domain'));
var_dump(isValidDomain('hello.mydomain.my'));
var_dump(isValidDomain('hello.mydomain.my.'));
于 2013-08-02T18:50:28.850 回答