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在线打包程序源码
Jul 27 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
PHP7新增函数
Mar 09 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
jQuery 使用个人心得
2009/02/26 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python实现图像几何变换
2015/07/06 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python Django 命名空间模式的实现
2019/08/09 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
纺织工程专业个人求职信范文
2014/01/27 职场文书
大专毕业生求职信
2014/07/05 职场文书
环境日宣传活动总结
2014/07/09 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
遗嘱格式范本
2015/08/07 职场文书
一年级语文教学随笔
2015/08/14 职场文书
教师研修随笔感言
2015/11/18 职场文书