admin管理员组

文章数量:1443020

php 获取url地址中的一级域名/顶级域名的方法

在 PHP 开发中经常需要获取url地址中的一级域名或者顶级域名,特别是在需要验证权限时这个功能就非常重要,虽然 PHP 内置了很多超全局变量,但是不能让我们轻易的获取到顶级域名,下面我们可以通过自定义函数的方式来截取到我们需要的。

代码语言:javascript代码运行次数:0运行复制
/**
 * 获取顶级域名
 * 
 * @param string $url 域名 HOST,如: ,www.baidu
 * @return string 顶级域名 如:m ,baidu
 */
function url_root($url=""){
    $url = $url ? $url : $_SERVER["HTTP_HOST"];
    $dual_host = array('aaa.pro','ac','ac.kr','ac.mu','aca.pro','acct.pro','ae','ah','ar','avocat.pro','bar.pro','biz.ki','biz.pl','bj','br','busan.kr','chungbuk.kr','chungnam.kr','club.tw','cn','co.ag','co.am','co.at','co.bz','co.cm','co','co.gg','co.gl','co.gy','co.il','co.im','co.in','co.je','co.kr','co.lc','co.mg','co.ms','co.mu','co.nl','co.nz','co.uk','co.ve','co.za','com.af','com.ag','com.am','com.ar','com.au','com.br','com.bz','com.cm','com','com.co','com.de','com.ec','com.es','com.gl','com.gr','com.gy','com.hn','com.ht','com.im','com.ki','com.lc','com.lv','com.mg','com.ms','com.mu','com.mx','com.nf','com.pe','com.ph','com.pk','com.pl','com.ps','com.pt','com.ro','com.ru','com.sb','com.sc','com.se','com.sg','com.so','com.tw','com.vc','com.ve','cpa.pro','cq','daegu.kr','daejeon.kr','de','ebiz.tw','edu','edu.gl','eng.pro','es.kr','eu','fin.ec','firm.in','fj','game.tw','gangwon.kr','gb','gb','gd','gen.in','go.kr','gov','gr','gs','gwangju.kr','gx','gyeongbuk.kr','gyeonggi.kr','gyeongnam.kr','gz','ha','hb','he','hi','hk','hl','hn','hs.kr','hu','hu','idv.tw','in','incheon.kr','ind.in','info.ec','info.ht','info.ki','info.nf','info.pl','info.ve','jeju.kr','jeonbuk.kr','jeonnam.kr','jl','jp','jpn','js','jur.pro','jx','kg.kr','kiwi.nz','kr','law.pro','ln','me.uk','med.ec','med.pro','mex','mo','ms.kr','ne.kr','net.af','net.ag','net.am','net.br','net.bz','net.cm','net','net.co','net.ec','net.gg','net.gl','net.gr','net.gy','net.hn','net.ht','net.im','net.in','net.je','net.ki','net.lc','net.lv','net.mg','net.mu','net.my','net.nf','net.nz','net.ph','net.pk','net.pl','net.ps','net.ru','net.sb','net.sc','net.so','net.vc','net.ve','nm','no','nom.ag','nom.co','nom.es','nom.ro','nx','or.at','or.jp','or.kr','or.mu','org.af','org.ag','org.am','org.bz','org','org.es','org.gg','org.gl','org.gr','org.hn','org.ht','org.il','org.im','org.in','org.je','org.ki','org.lc','org.lv','org.mg','org.ms','org.mu','org.my','org.nz','org.pk','org.pl','org.ps','org.ro','org.ru','org.sb','org.sc','org.so','org.uk','org.vc','org.ve','pe.kr','pro.ec','qc','qh','radio.am','radio.fm','re.kr','recht.pro','ru','sa','sc','sc.kr','sd','se','senet','seoul.kr','sh','sn','sx','tj','tw','uk','uk','ulsan.kr','us','us','uy','web.ve','xj','xz','yn','za','zj');
    $url_arr   = explode(".", $url);
    if (count($url_arr) <= 2) {
        $host = $url;
    } else {
        $last   = array_pop($url_arr);
        $last_1 = array_pop($url_arr);
        $last_2 = array_pop($url_arr);
        $host   = $last_1.'.'.$last;
        if (in_array($host, $dual_host)) {
            $host = $last_2.'.'.$last_1.'.'.$last;
        }
    }
    return $host;
}

本文标签: php 获取url地址中的一级域名顶级域名的方法