PHP实现通过URL提取根域名_php技巧

PHP根据URL提取根域名,个人工作中用到,由于网络上很多代码都不能得到正确结果就自己写了一个,欢迎大家使用并提出其中的bug.

<?php
#使用示例
echo getBaseDomain('http://blog.jp.goo.ne.jp/index.php')->domain;echo "\n";
echo getBaseDomain('http://51.ca/index.php')->domain;echo "\n";
echo getBaseDomain('http://blog.ab.cc.win.aisa.hk/index.php')->domain;echo "\n";

function getBaseDomain($url=''){
  if(!$url){
    return $url;
  }
  #列举域名中固定元素
  $state_domain = array(
    'al','dz','af','ar','ae','aw','om','az','eg','et','ie','ee','ad','ao','ai','ag','at','au','mo','bb','pg','bs','pk','py','ps','bh','pa','br','by','bm','bg','mp','bj','be','is','pr','ba','pl','bo','bz','bw','bt','bf','bi','bv','kp','gq','dk','de','tl','tp','tg','dm','do','ru','ec','er','fr','fo','pf','gf','tf','va','ph','fj','fi','cv','fk','gm','cg','cd','co','cr','gg','gd','gl','ge','cu','gp','gu','gy','kz','ht','kr','nl','an','hm','hn','ki','dj','kg','gn','gw','ca','gh','ga','kh','cz','zw','cm','qa','ky','km','ci','kw','cc','hr','ke','ck','lv','ls','la','lb','lt','lr','ly','li','re','lu','rw','ro','mg','im','mv','mt','mw','my','ml','mk','mh','mq','yt','mu','mr','us','um','as','vi','mn','ms','bd','pe','fm','mm','md','ma','mc','mz','mx','nr','np','ni','ne','ng','nu','no','nf','na','za','aq','gs','eu','pw','pn','pt','jp','se','ch','sv','ws','yu','sl','sn','cy','sc','sa','cx','st','sh','kn','lc','sm','pm','vc','lk','sk','si','sj','sz','sd','sr','sb','so','tj','tw','th','tz','to','tc','tt','tn','tv','tr','tm','tk','wf','vu','gt','ve','bn','ug','ua','uy','uz','es','eh','gr','hk','sg','nc','nz','hu','sy','jm','am','ac','ye','iq','ir','il','it','in','id','uk','vg','io','jo','vn','zm','je','td','gi','cl','cf','cn','yr','com','arpa','edu','gov','int','mil','net','org','biz','info','pro','name','museum','coop','aero','xxx','idv','me','mobi','asia','ax','bl','bq','cat','cw','gb','jobs','mf','rs','su','sx','tel','travel'
  );

  if(!preg_match("/^http/is", $url)){
    $url="http://".$url;
  }

  $res = null;
  $res->domain = null;
  $res->host = null;
  $url_parse = parse_url(strtolower($url));
  $urlarr = explode(".", $url_parse['host']);
  $count = count($urlarr);

  if($count <= 2){
    #当域名直接根形式不存在host部分直接输出
    $res->domain = $url_parse['host'];
  }elseif($count > 2){
    $last = array_pop($urlarr);
    $last_1 = array_pop($urlarr);
    $last_2 = array_pop($urlarr);

    $res->domain = $last_1.'.'.$last;
    $res->host = $last_2;

    if(in_array($last, $state_domain)){
      $res->domain=$last_1.'.'.$last;
      $res->host=implode('.', $urlarr);
    }

    if(in_array($last_1, $state_domain)){
      $res->domain = $last_2.'.'.$last_1.'.'.$last;
      $res->host = implode('.', $urlarr);
    }
    #print_r(get_defined_vars());die;
  }
  return $res;

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索PHP提取根域名
js 提取url中的域名、url提取域名、java提取url主域名、java url提取域名、提取url域名正则表达,以便于您获取更多的相关知识。

时间: 2024-12-22 15:23:36

PHP实现通过URL提取根域名_php技巧的相关文章

php提取字符串中网站url地址的方法_php技巧

本文实例讲述了php提取字符串中网站url地址的方法.分享给大家供大家参考.具体分析如下: 今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下: 复制代码 代码如下: $postInfo['answer2'] ='可以的,商业贷款可摊还36%,公积金贷款可摊还16%|||可以先把账户里的余额提取出来用作首付,然后每个月贷款商业贷款可摊还36%,公积金贷款可摊还16%|||可以的,现在甲类公积金是摊还比例htt

小谈php正则提取图片地址_php技巧

迷上了正则,不断尝试着新花招,首先感谢TNA 的非完全输出RSS,然后再次感谢SH的强迫性学习.没有TNA,我不会去看正则,更不知道世界上有种这么牛的表达式:不是SH的死活说他不懂不知道,我也不会硬着头皮去琢磨,去改进.达到同一个目的,正则的表达方式可以不唯一,没有做不到,只有你没想到.可以这样说吧,正则就是玩设定规律,我大爱这种东西.没有比设定规律筛选东西更让我兴奋.感到awesome的了. 分享一下在php环境下使用正则提取图片地址的一些小心得: 图片网址规范的html代码无非就是 复制代码

php常用的url处理函数总结_php技巧

本文实例总结了几种在php中url编码解析函数,如parse_url.rawurldecode.rawurlencode.urldecode.urlencode.分享给大家供大家参考.具体用法如下: 下面来看介绍与实例:parse_url($str url); 把url转换成数组:print_r(parse_url("www.jb51.net")); 解析url并输出返回数组,url 专用格式字符串还原成普通字符串. 语法:string rawurldecode(string str)

PHP获取当前完整URL地址的函数_php技巧

这里主要是给大家分享一个非常实用的PHP函数,代码很简单,就不多废话了,小伙伴们需要的话直接拿去用. 复制代码 代码如下: //php获取当前访问的完整url地址 function get_current_url(){     $current_url='http://';     if(isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on'){         $current_url='https://';     }     if($_SE

探讨:parse url解析URL,返回其组成部分_php技巧

parse_url(PHP 4, PHP 5)parse_url - 解析 URL,返回其组成部分说明array parse_url ( string $url )本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分. 本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分.不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析. 参数url 要解析的 URL 返回值对严重不合格的 URL,parse_url() 可能会返回 F

php的urlencode()URL编码函数浅析_php技巧

URLEncode的方式一般有两种,一种是传统的基于GB2312的Encode(Baidu.Yisou等使用),另一种是基于UTF-8的Encode(Google.Yahoo等使用). 本工具分别实现两种方式的Encode与Decode: 中文 -> GB2312的Encode -> %D6%D0%CE%C4 中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87 Html中的URLEncode: 编码为GB2312的html文件中:http://s.jb

Javascript与PHP验证用户输入URL地址是否正确_php技巧

本文实例讲述了Javascript与PHP验证用户输入URL地址是否正确的方法,分享给大家供大家参考.具体方法如下: 1.javascript检测URL地址有效性: 复制代码 代码如下: <script type="text/javascript"> function checkUrl() {  var url = document.getElementById('url').value;  if (url==''){   alert('URL 地址不能为空');  ret

php解析字符串里所有URL地址的方法_php技巧

本文实例讲述了php解析字符串里所有URL地址的方法.分享给大家供大家参考.具体如下: <?php // $html = the html on the page // $current_url = the full url that the html came from //(only needed for $repath) // $repath = converts ../ and / and // urls to full valid urls function pageLinks($ht

使用URL传输SESSION信息_php技巧

 在php的学习中,会话是我们常常用到的,那今天我们就来详细讲讲会话中的session: 一.session的工作机制: 当开启session后,服务器会在服务器中保存session文件,然后再浏览器保存session的id号,用于获取对应的session信息: 二.下面是文章的重点:基于URL传输session 如果按照基本的session方法传输session,那么会用到用户浏览器中的cookie,一旦用户关闭cookie,那么session就不起作用啦!所以接下来我们将要把session的