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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
php字符串分割函数explode的实例代码
Feb 07 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 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编程网上资源导航
2006/10/09 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
js同时按下两个方向键
2007/12/01 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
Python抓取框架 Scrapy的架构
2016/08/12 Python
Python 数据结构之旋转链表
2017/02/25 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
matplotlib实现区域颜色填充
2019/03/18 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
广告设计应届生求职信
2014/03/01 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书