php中取得URL的根域名的代码 |
本文标签:URL,根域名 复制代码 代码如下: <?php /** * 取得根域名 * * @author lonely * @create 2011-3-11 * @version 0.1 * @lastupdate lonely * @package Sl */ class Sl_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=array_pop($url); }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; } } ?> |