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函数
Oct 09 PHP
15种PHP Encoder的比较
Apr 17 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
一个PHP针对数字的加密解密类
Mar 20 PHP
PHP常用正则表达式集锦
Aug 17 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
PHP RabbitMQ消息列队
May 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
linux实现php定时执行cron任务详解
2013/12/24 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python从子线程中获得返回值的方法
2019/01/30 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
python实现宿舍管理系统
2019/11/22 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
python相对企业语言优势在哪
2020/06/12 Python
如何用Python徒手写线性回归
2021/01/25 Python
linux面试相关问题
2013/04/28 面试题
应届生个人求职信模板
2013/11/26 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
离职信范文
2015/06/23 职场文书
同学聚会致辞集锦
2015/07/28 职场文书