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蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
Aug 11 PHP
php实现微信支付之企业付款
May 30 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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高手?学会“懒惰”的编程
2006/12/05 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
JS实现简单打字测试
2020/06/24 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
Python模拟三级菜单效果
2017/09/11 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Python WSGI的深入理解
2018/08/01 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
PyQt实现计数器的方法示例
2021/01/18 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
采购员的工作职责
2013/12/26 职场文书
文化宣传方案
2014/03/13 职场文书
协议书格式
2014/04/23 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
幼儿园辞职信范文
2015/02/27 职场文书