PHP实现通过URL提取根域名


Posted in PHP onMarch 31, 2016

PHP根据URL提取根域名,个人工作中用到,由于网络上很多代码都不能得到正确结果就自己写了一个,欢迎大家使用并提出其中的bug.

<?php 
#使用示例
echo getBaseDomain('http://blog.jp.goo.ne.jp/index.php')->domain;echo "\n";
echo getBaseDomain('http://51.ca/index.php')->domain;echo "\n";
echo getBaseDomain('http://blog.ab.cc.win.aisa.hk/index.php')->domain;echo "\n";
 
 
function getBaseDomain($url=''){
  if(!$url){
    return $url;
  }
  #列举域名中固定元素
  $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','com','arpa','edu','gov','int','mil','net','org','biz','info','pro','name','museum','coop','aero','xxx','idv','me','mobi','asia','ax','bl','bq','cat','cw','gb','jobs','mf','rs','su','sx','tel','travel'
  );
   
  if(!preg_match("/^http/is", $url)){
    $url="http://".$url;
  }
 
  $res = null;
  $res->domain = null;
  $res->host = null;
  $url_parse = parse_url(strtolower($url));
  $urlarr = explode(".", $url_parse['host']);
  $count = count($urlarr);
   
  if($count <= 2){
    #当域名直接根形式不存在host部分直接输出
    $res->domain = $url_parse['host'];
  }elseif($count > 2){
    $last = array_pop($urlarr);
    $last_1 = array_pop($urlarr);
    $last_2 = array_pop($urlarr);
     
    $res->domain = $last_1.'.'.$last;
    $res->host = $last_2;
     
    if(in_array($last, $state_domain)){
      $res->domain=$last_1.'.'.$last;
      $res->host=implode('.', $urlarr);
    }
     
    if(in_array($last_1, $state_domain)){
      $res->domain = $last_2.'.'.$last_1.'.'.$last;
      $res->host = implode('.', $urlarr);
    }
    #print_r(get_defined_vars());die;
  }
  return $res;
   
}
PHP 相关文章推荐
使用PHP模拟HTTP认证
Oct 09 PHP
PHP个人网站架设连环讲(三)
Oct 09 PHP
php 方便水印和缩略图的图形类
May 21 PHP
PHP 批量删除 sql语句
Jun 05 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
解析php中的escape函数
Jun 29 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 PHP
PHP的PDO操作简单示例
Mar 30 #PHP
PHP Smarty模版简单使用方法
Mar 30 #PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 #PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 #PHP
PHP记录页面停留时间的方法
Mar 30 #PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 #PHP
PHP的邮件群发系统phplist配置方法详细总结
Mar 30 #PHP
You might like
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
xtree.js 代码
2007/03/13 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
JS验证码实现代码
2017/09/14 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python控制台中实现进度条功能
2015/11/10 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
python配置文件写入过程详解
2019/10/19 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
用python批量移动文件
2021/01/14 Python
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
社区科普工作方案
2014/06/03 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
模范班主任事迹材料
2014/12/17 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
使用python向MongoDB插入时间字段的操作
2021/05/18 Python