找回密码
 注册

[PHP] 正则表达式提取或匹配网站根域名

php 发表于 2013/11/30 17:05 | 显示全部楼层 |阅读模式
所谓根域名就是除去www或其他字符的域名,比如一个完整域名是aaa.bbb.ccc.com.cn的网站,它的根域名就是ccc.com.cn。正则表达式匹配根域名可以匹配形如xxx.com,xxx.com.cn,xxx.cn三种形式的域名,本例已经直接写成函数,使用正则表达式获取网站根域名。
可以匹配提取只由国际通用顶级域名(com,net,org,edu,gov,biz,tv,me,pro,name,cc,co,info,cm)或只由国家顶级域名(cn,us,hk,tw,uk,it,fr,br,in,de),或同时由国际通用域名和国家顶级域名(如com.cn,net.us,org.hk等)组成的根域名,你也可以修改正则表达式,支持更多的域名。
<?php
        /* 获取最顶级域名
         * @param $url 需要提取根域名的url链接 可选 不提供则自动取当前主机名称
        */
        function getRootDomain($url=''){
                $url=$url?$url:$_SERVER['HTTP_HOST'];
                if(preg_match('%^[\d\.]$%',$url)) return;
                if(preg_match('%[^:\.\/]+(?:(?<ext>\.(?:com|net|org|edu|gov|biz|tv|me|pro|name|cc|co|info|cm))|(?<ctr>\.(?:cn|us|hk|tw|uk|it|fr|br|in|de))|\k<ext>\k<ctr>)+$%i',$url,$match)){
                        return $match[0];
                }
                return;
        }
        var_dump(getRootDomain());
?>


手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表