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 session 错误
May 21 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
分享下php5类中三种数据类型的区别
Jan 26 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
php检测文本的编码
Jul 26 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
PHP判断密码强度的方法详解
May 26 PHP
php面向对象程序设计中self与static的区别分析
May 21 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 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
php中mysql模块部分功能的简单封装
2011/09/30 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
zend framework重定向方法小结
2016/05/28 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
浅谈Python单向链表的实现
2015/12/24 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
python做接口测试的必要性
2019/11/20 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
keras之权重初始化方式
2020/05/21 Python
详解Python中第三方库Faker
2020/09/25 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
《画家乡》教学反思
2014/04/22 职场文书
委托书怎么写
2014/07/31 职场文书
户籍证明格式
2014/09/15 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
python数字图像处理:图像简单滤波
2022/06/28 Python