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 foreach循环使用详解与实例代码
May 08 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
浅析iis7.5安装配置php环境
May 10 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
windows7配置Nginx+php+mysql的详细教程
Sep 04 PHP
PHP经典实用正则表达式小结
May 04 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
Laravel框架中集成MongoDB和使用详解
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实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
js停止输出代码
2008/07/20 Javascript
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
django的ORM操作 增加和查询
2019/07/26 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
python退出循环的方法
2020/06/18 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
特步官方商城:Xtep
2017/03/21 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
自主招生自荐信指南
2014/02/04 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
应用心理学专业求职信
2014/08/04 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
2014司机年终工作总结
2014/12/05 职场文书
单独二胎证明
2015/06/24 职场文书