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 相关文章推荐
编译问题
Oct 09 PHP
php中文本操作的类
Mar 17 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 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
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
php 基础函数
2017/02/10 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript的数组和常用函数详解
2014/05/09 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
用Python实现换行符转换的脚本的教程
2015/04/16 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
用python实现刷点击率的示例代码
2019/02/21 Python
django 信号调度机制详解
2019/07/19 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
新闻专业应届生求职信
2013/10/31 职场文书
会计电算化个人自我评价
2013/11/17 职场文书
教师的实习鉴定
2013/12/15 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
道德演讲稿
2014/05/21 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
新生开学寄语大全
2015/05/28 职场文书
值班管理制度范本
2015/08/06 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
Golang解析JSON对象
2022/04/30 Golang
nginx 配置缓存
2022/05/11 Servers