PHP取得URL的根域名

<? php
/* *
 * 取得根域名
 *
 * @author     lonely
 * @create        2011-3-11
 * @version    0.11
 * @lastupdate lonely
 * @package Sl
*/
class  RootDomain{
     
private   static   $self ;
    
private   $domain = null ;
    
private   $host = null ;
    
private   $state_domain ;
    
private   $top_domain ;
    
/* *
     * 取得域名分析实例
     * Enter description here ...
     
*/
    
public   static   function  instace(){
        
if ( ! self :: $self )
            self
:: $self = new  self();
        
return  self :: $self ;
    }
    
private   function   __construct(){
        
$this -> state_domain = array (
            
' al ' , ' dz ' , ' af ' , ' ar ' , ' ae ' , ' aw ' , ' om ' , ' az ' , ' eg ' , ' et ' , ' ie ' , ' ee ' , ' ad ' , ' ao ' , ' ai ' , ' ag ' , ' at ' , ' au ' , ' mo ' , ' bb ' , ' pg ' , ' bs ' , ' pk ' , ' py ' , ' ps ' , ' bh ' , ' pa ' , ' br ' , ' by ' , ' bm ' , ' bg ' , ' mp ' , ' bj ' , ' be ' , ' is ' , ' pr ' , ' ba ' , ' pl ' , ' bo ' , ' bz ' , ' bw ' , ' bt ' , ' bf ' , ' bi ' , ' bv ' , ' kp ' , ' gq ' , ' dk ' , ' de ' , ' tl ' , ' tp ' , ' tg ' , ' dm ' , ' do ' , ' ru ' , ' ec ' , ' er ' , ' fr ' , ' fo ' , ' pf ' , ' gf ' , ' tf ' , ' va ' , ' ph ' , ' fj ' , ' fi ' , ' cv ' , ' fk ' , ' gm ' , ' cg ' , ' cd ' , ' co ' , ' cr ' , ' gg ' , ' gd ' , ' gl ' , ' ge ' , ' cu ' , ' gp ' , ' gu ' , ' gy ' , ' kz ' , ' ht ' , ' kr ' , ' nl ' , ' an ' , ' hm ' , ' hn ' , ' ki ' , ' dj ' , ' kg ' , ' gn ' , ' gw ' , ' ca ' , ' gh ' , ' ga ' , ' kh ' , ' cz ' , ' zw ' , ' cm ' , ' qa ' , ' ky ' , ' km ' , ' ci ' , ' kw ' , ' cc ' , ' hr ' , ' ke ' , ' ck ' , ' lv ' , ' ls ' , ' la ' , ' lb ' , ' lt ' , ' lr ' , ' ly ' , ' li ' , ' re ' , ' lu ' , ' rw ' , ' ro ' , ' mg ' , ' im ' , ' mv ' , ' mt ' , ' mw ' , ' my ' , ' ml ' , ' mk ' , ' mh ' , ' mq ' , ' yt ' , ' mu ' , ' mr ' , ' us ' , ' um ' , ' as ' , ' vi ' , ' mn ' , ' ms ' , ' bd ' , ' pe ' , ' fm ' , ' mm ' , ' md ' , ' ma ' , ' mc ' , ' mz ' , ' mx ' , ' nr ' , ' np ' , ' ni ' , ' ne ' , ' ng ' , ' nu ' , ' no ' , ' nf ' , ' na ' , ' za ' , ' aq ' , ' gs ' , ' eu ' , ' pw ' , ' pn ' , ' pt ' , ' jp ' , ' se ' , ' ch ' , ' sv ' , ' ws ' , ' yu ' , ' sl ' , ' sn ' , ' cy ' , ' sc ' , ' sa ' , ' cx ' , ' st ' , ' sh ' , ' kn ' , ' lc ' , ' sm ' , ' pm ' , ' vc ' , ' lk ' , ' sk ' , ' si ' , ' sj ' , ' sz ' , ' sd ' , ' sr ' , ' sb ' , ' so ' , ' tj ' , ' tw ' , ' th ' , ' tz ' , ' to ' , ' tc ' , ' tt ' , ' tn ' , ' tv ' , ' tr ' , ' tm ' , ' tk ' , ' wf ' , ' vu ' , ' gt ' , ' ve ' , ' bn ' , ' ug ' , ' ua ' , ' uy ' , ' uz ' , ' es ' , ' eh ' , ' gr ' , ' hk ' , ' sg ' , ' nc ' , ' nz ' , ' hu ' , ' sy ' , ' jm ' , ' am ' , ' ac ' , ' ye ' , ' iq ' , ' ir ' , ' il ' , ' it ' , ' in ' , ' id ' , ' uk ' , ' vg ' , ' io ' , ' jo ' , ' vn ' , ' zm ' , ' je ' , ' td ' , ' gi ' , ' cl ' , ' cf ' , ' cn ' , ' yr '
        );
        
$this -> top_domain = array ( ' com ' , ' arpa ' , ' edu ' , ' gov ' , ' int ' , ' mil ' , ' net ' , ' org ' , ' biz ' , ' info ' , ' pro ' , ' name ' , ' museum ' , ' coop ' , ' aero ' , ' xxx ' , ' idv ' , ' me ' , ' mobi ' );
        
$this -> url = $_SERVER [ ' HTTP_HOST ' ];
    }
    
/* *
     * 设置URL
     * Enter description here ...
     * @param string $url
     
*/
    
public   function  setUrl( $url = null ){
        
$url = $url ? $url : $this -> url;
        
if ( empty ( $url )) return   $this ;
        
if ( ! preg_match ( " /^http:/is " ,   $url ))
            
$url = " http:// " . $url ;
        
$url = parse_url ( strtolower ( $url ));
        
$urlarr = explode ( " . " ,   $url [ ' host ' ]);
        
$count = count ( $urlarr );
        
        
if  ( $count <= 2 ){
            
$this -> domain = $url [ ' host ' ];
        }
else   if  ( $count > 2 ){
            
$last = array_pop ( $urlarr );
            
$last_1 = array_pop ( $urlarr );
            
if ( in_array ( $last ,   $this -> top_domain)){
                
$this -> domain = $last_1 . ' . ' . $last ;
                
$this -> host = implode ( ' . ' ,   $urlarr );
            }
else   if  ( in_array ( $last ,   $this -> state_domain)){
                
$last_2 = array_pop ( $urlarr );
                
if ( in_array ( $last_1 ,   $this -> top_domain)){
                    
$this -> domain = $last_2 . ' . ' . $last_1 . ' . ' . $last ;
                    
$this -> host = implode ( ' . ' ,   $urlarr );
                }
else {
                    
$this -> host = implode ( ' . ' ,   $urlarr ) . $last_2 ;
                    
$this -> domain = $last_1 . ' . ' . $last ;
                }
            }
        }
        
return   $this ;
    }
    
/* *
     * 取得域名
     * Enter description here ...
     
*/
    
public   function  getDomain(){
        
return   $this -> domain;
    }
    
/* *
     * 取得主机
     * Enter description here ...
     
*/
    
public   function  getHost(){
        
return   $this -> host;
    }
}

转载于:https://www.cnblogs.com/liushannet/archive/2011/03/08/1977510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值