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.my、またはhello.mydomain.my.(末尾のドット付き) です。whilehello.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 に答える