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中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
常用PHP框架功能对照表
Oct 23 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 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使用COPY函数更新配置文件的方法
2015/06/18 PHP
php while循环控制的简单实例
2016/05/30 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
vue resource post请求时遇到的坑
2017/10/19 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python访问抓取网页常用命令总结
2017/04/11 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python实现公司年会抽奖程序
2019/01/22 Python
python按比例随机切分数据的实现
2019/07/11 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python