PHP自定义函数获取URL中一级域名的方法


Posted in PHP onAugust 23, 2016

本文实例讲述了PHP自定义函数获取URL中一级域名的方法。分享给大家供大家参考,具体如下:

<?php
/*
 * Created on 2016-8-23
 */
function regular_domain($domain)
{
  if (substr ( $domain, 0, 7 ) == 'http://') {
    $domain = substr ( $domain, 7 );
  }
  if (strpos ( $domain, '/' ) !== false) {
    $domain = substr ( $domain, 0, strpos ( $domain, '/' ) );
  }
  return strtolower ( $domain );
}
function top_domain($domain) {
  $domain = regular_domain ( $domain );
  $iana_root = array (
      'ac',
      'ad',
      'ae',
      'aero',
      'af',
      'ag',
      'ai',
      'al',
      'am',
      'an',
      'ao',
      'aq',
      'ar',
      'arpa',
      'as',
      'asia',
      'at',
      'au',
      'aw',
      'ax',
      'az',
      'ba',
      'bb',
      'bd',
      'be',
      'bf',
      'bg',
      'bh',
      'bi',
      'biz',
      'bj',
      'bl',
      'bm',
      'bn',
      'bo',
      'bq',
      'br',
      'bs',
      'bt',
      'bv',
      'bw',
      'by',
      'bz',
      'ca',
      'cat',
      'cc',
      'cd',
      'cf',
      'cg',
      'ch',
      'ci',
      'ck',
      'cl',
      'cm',
      'cn',
      'co',
      'com',
      'coop',
      'cr',
      'cu',
      'cv',
      'cw',
      'cx',
      'cy',
      'cz',
      'de',
      'dj',
      'dk',
      'dm',
      'do',
      'dz',
      'ec',
      'edu',
      'ee',
      'eg',
      'eh',
      'er',
      'es',
      'et',
      'eu',
      'fi',
      'fj',
      'fk',
      'fm',
      'fo',
      'fr',
      'ga',
      'gb',
      'gd',
      'ge',
      'gf',
      'gg',
      'gh',
      'gi',
      'gl',
      'gm',
      'gn',
      'gov',
      'gp',
      'gq',
      'gr',
      'gs',
      'gt',
      'gu',
      'gw',
      'gy',
      'hk',
      'hm',
      'hn',
      'hr',
      'ht',
      'hu',
      'id',
      'ie',
      'il',
      'im',
      'in',
      'info',
      'int',
      'io',
      'iq',
      'ir',
      'is',
      'it',
      'je',
      'jm',
      'jo',
      'jobs',
      'jp',
      'ke',
      'kg',
      'kh',
      'ki',
      'km',
      'kn',
      'kp',
      'kr',
      'kw',
      'ky',
      'kz',
      'la',
      'lb',
      'lc',
      'li',
      'lk',
      'lr',
      'ls',
      'lt',
      'lu',
      'lv',
      'ly',
      'ma',
      'mc',
      'md',
      'me',
      'mf',
      'mg',
      'mh',
      'mil',
      'mk',
      'ml',
      'mm',
      'mn',
      'mo',
      'mobi',
      'mp',
      'mq',
      'mr',
      'ms',
      'mt',
      'mu',
      'museum',
      'mv',
      'mw',
      'mx',
      'my',
      'mz',
      'na',
      'name',
      'nc',
      'ne',
      'net',
      'nf',
      'ng',
      'ni',
      'nl',
      'no',
      'np',
      'nr',
      'nu',
      'nz',
      'om',
      'org',
      'pa',
      'pe',
      'pf',
      'pg',
      'ph',
      'pk',
      'pl',
      'pm',
      'pn',
      'pr',
      'pro',
      'ps',
      'pt',
      'pw',
      'py',
      'qa',
      're',
      'ro',
      'rs',
      'ru',
      'rw',
      'sa',
      'sb',
      'sc',
      'sd',
      'se',
      'sg',
      'sh',
      'si',
      'sj',
      'sk',
      'sl',
      'sm',
      'sn',
      'so',
      'sr',
      'ss',
      'st',
      'su',
      'sv',
      'sx',
      'sy',
      'sz',
      'tc',
      'td',
      'tel',
      'tf',
      'tg',
      'th',
      'tj',
      'tk',
      'tl',
      'tm',
      'tn',
      'to',
      'tp',
      'tr',
      'travel',
      'tt',
      'tv',
      'tw',
      'tz',
      'ua',
      'ug',
      'uk',
      'um',
      'us',
      'uy',
      'uz',
      'va',
      'vc',
      've',
      'vg',
      'vi',
      'vn',
      'vu',
      'wf',
      'ws',
      'xxx',
      'ye',
      'yt',
      'za',
      'zm',
      'zw'
  );
  $sub_domain = explode ( '.', $domain );
  $top_domain = '';
  $top_domain_count = 0;
  for($i = count ( $sub_domain ) - 1; $i >= 0; $i --) {
    if ($i == 0) {
      // just in case of something like NAME.COM
      break;
    }
    if (in_array ( $sub_domain [$i], $iana_root )) {
      $top_domain_count ++;
      $top_domain = '.' . $sub_domain [$i] . $top_domain;
      if ($top_domain_count >= 2) {
        break;
      }
    }
  }
  $top_domain = $sub_domain [count ( $sub_domain ) - $top_domain_count - 1] . $top_domain;
  return $top_domain;
}
echo top_domain("http://tools.3water.com/");
?>

运行结果为:

PHP自定义函数获取URL中一级域名的方法

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 的 __FILE__ 常量
Jan 15 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP实现的观察者模式实例
Jun 21 PHP
PHP环形链表实现方法示例
Sep 15 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 #PHP
PHP简单判断手机设备的方法
Aug 23 #PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 #PHP
PHP Cookie学习笔记
Aug 23 #PHP
PHP生成及获取JSON文件的方法
Aug 23 #PHP
利用PHP如何写APP接口详解
Aug 23 #PHP
PHP微信API接口类
Aug 22 #PHP
You might like
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
php中函数的形参与实参的问题说明
2010/09/01 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
php实现文件上传基本验证
2020/03/04 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python中Flask框架简单入门实例
2015/03/21 Python
python的常用模块之collections模块详解
2018/12/06 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
小班开学寄语
2014/04/04 职场文书
卖车协议书
2014/04/21 职场文书
应届大专生求职信
2014/06/26 职场文书
升学宴学生答谢词
2015/01/05 职场文书
小王子读书笔记
2015/06/29 职场文书