PHP根据二级域名甚至三级获取其顶级域名

  • 浏览:1704
  • |
  • 更新:
  • |
  • 标签:PHP 域名 

常常会用到域名的判断,当得到一个domain时,怎么获取其顶级域名呢。试试下面这个方法。

工具/原料

  • PHP,文本编辑器(EditPlus,记事本等等)

方法/步骤

  1. 1

    需要识别的二级或三级域名:

    $s =<<< TXT

    www2.abc.com.cn

    www3.abc.com.cn

    xx.xx.abc.com.cn

    www2.abc.cn

    www3.abc.cn

    xx.xx.abc.cn

    www2.abc.us

    www3.abc.us

    xx.xx.abc.us

    TXT;

  2. 2

    定义你允许识别的国家域名后缀:

    $g = explode('|', 'af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za'); //允许的国家域名

    $j = array('com', 'net'); //允许的机构名

  3. 2
    该信息非法爬取自百度经验
  4. 3

    PHP判断其顶级域名的代码 

    foreach($a as $r) {

      echo "$r ==> ";

      $n = 0;

      $h = array_slice(explode('.', $r), 1); //去掉主机名

      if(array_intersect($g, $h)) $n++;

      if(array_intersect($j, $h)) $n++;

      if($n) echo join('.', array_slice($h, -($n+1)));

      echo PHP_EOL;

    }

  5. 4

    完整代码示例:

    $s =<<< TXT

    www2.abc.com.cn

    www3.abc.com.cn

    xx.xx.abc.com.cn

    www2.abc.cn

    www3.abc.cn

    xx.xx.abc.cn

    www2.abc.us

    www3.abc.us

    xx.xx.abc.us

    TXT;

    $a = preg_split("/[\r\n]+/", $s); //待识别域名

    $g = explode('|', 'af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za'); //允许的国家域名

    $j = array('com', 'net'); //允许的机构名

     

    foreach($a as $r) {

      echo "$r ==> ";

      $n = 0;

      $h = array_slice(explode('.', $r), 1); //去掉主机名

      if(array_intersect($g, $h)) $n++;

      if(array_intersect($j, $h)) $n++;

      if($n) echo join('.', array_slice($h, -($n+1)));

      echo PHP_EOL;

    }

    运行结果:

    www2.abc.com.cn ==> abc.com.cnwww3.abc.com.cn ==> abc.com.cnxx.xx.abc.com.cn ==> abc.com.cnwww2.abc.cn ==> abc.cnwww3.abc.cn ==> abc.cnxx.xx.abc.cn ==> abc.cnwww2.abc.us ==> abc.uswww3.abc.us ==> abc.usxx.xx.abc.us ==> abc.us

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
展开阅读全部
相关标签PHP域名