根据域名字符串,生成顶级域名的字符串,如下:
 原字符 => 生成后
 www.baidu.com => baidu.com
 auto.sina.com.cn => sina.com.cn
 ...用PHP应该怎么写?

解决方案 »

  1.   

    呵呵.朋友.你是在写域名解析系统吗?哈哈.如果是用php来写的话,颇具有点麻烦...以点号来区分不太妥当,我曾经差点在假"淘宝"上当过一次,就是.有个xxx.taobao.com.ashen.com.cn的域名.哈哈这么长.牛吧.给你个思路,具体的代码应该很容易:
    不以点来区分,也不以com或cn等域名结尾来区分,以/来区分.在HTTP协议中,/一般作为结尾.
    1.建立一个顶级域名数据库(可以在php页面内置,也可以用xml,或者你直接想储存在mysql中也不错,方便日后添加),储存com,cn,net,org,cc,us,jp,info,me,la等等域名后缀,但像com.cn这类可以不必了,用字符串处理函数就可以判断了.省去一些麻烦骤.
    2.用字符串处理,将从左到右第一次出现的/句末的字符串都删除.
    3.将得到的字符串,如xxx.taobao.com.ashen.com.cn,从右至左开始处理,遇到数据库中已知的域名后缀,检查.cn域名,发现一个,del掉,发现.com后缀,del掉,注意,这里的点号就很重要了,可以区分开是否是域名后缀,当检查不到有数据库中的点什么什么后缀域名时候,在接下去的那个点号里面的ashen即是根域名了.提取,然后加上已经del掉的那两个.即ashen.com.cn.
    这样说起来有点繁杂..具体还得你去摸索.我想代码要写的话,估计很简单...先以/区分,再配合数据,以点.来区分.很容易吧?
      

  2.   

    不系吧?思路已经有了,网上流传的,都是截取整个域名的代码,加以修改即可.<?
    function PMA_getenv($var_name) {
    if (isset($_SERVER[$var_name])) {
    return $_SERVER[$var_name];
    } elseif (isset($_ENV[$var_name])) {
    return $_ENV[$var_name];
    } elseif (getenv($var_name)) {
    return getenv($var_name);
    } elseif (function_exists('apache_getenv')
    && apache_getenv($var_name, true)) {
    return apache_getenv($var_name, true);
    }
    return '';
    }
    if (empty($HTTP_HOST)) {
    if (PMA_getenv('HTTP_HOST')) {
    $HTTP_HOST = PMA_getenv('HTTP_HOST');
    } else {
    $HTTP_HOST = '';
    }
    }
    echo htmlspecialchars($HTTP_HOST);
    ?>
      

  3.   

    整个域名直接 parse_url('http://www.baidu.com')['host'] 就可以了
    主要是从 www.baidu.com 获取 根域名baidu.com
    还得考虑到.com.cn的问题
      

  4.   

    嘿嘿
    www.net.cn

    net.cn
    还是
    www.net.cn
    楼主想要哪个?
      

  5.   

    理论上 xxx.com.cnwww.sina.com.cn都属于 com.cn 的.
      

  6.   

    要www.net.cn 
    因为www.net.cn 其实是省略了前边的www,现在看到的www就是它注册net.cn域名时填的东西
    你访问一下http://www.www.net.cn/ 就知道了