【问题标题】:Get Domain Name with suffix (Only Domain) (Regex PHP)获取带后缀的域名(仅限域)(Regex PHP)
【发布时间】:2014-06-24 11:03:51
【问题描述】:

获取带后缀的域名(仅限域)

我需要 PHP 或 JavaScript 中的正则表达式来解析域。

任何后缀(com,org,net,us,ar,....)和任何协议(http,https,ftp,...)

例子:

array(
  , 'http://domainname.com'
  , 'http://domainname.com/whatever/you/get/the/idea'
  , 'http://www.domainname.com/whatever/you/get/the/idea'
  , 'http://www.domainname.com'
  , 'https://s1.s2.domainname.com/321.com/www.654.vom/'
  , 'https://s1.domainname.com'
  , 'https://s1.domainname.com/domain1.com/'
  , 'https://domain1.com.domainname.com'
  , 's1.s2.domainname.com/321.com/www.654.vom/'
  , 's1.domainname.com'
  , 's1.domainname.com/domain1.com/'
  , 'domain1.com.domainname.com'
);

结果: 所有结果都是 domainname.com

【问题讨论】:

标签: javascript php regex


【解决方案1】:

JS,使用现代的URL API

   u = 'https://s1.s2.domainname.com/321.com/www.654.vom/'
   host = new URL(u).host.split('.').slice(-2).join('.')

一种老式的正则表达式方式

   host = u.match(/^\w+:\/\/.*?(\w+\.\w+)(\/|$)/)[1]

【讨论】:

    【解决方案2】:

    没有正则表达式的方法:

    $urls = array('http://domainname.com',
                  'http://domainname.com/whatever/you/get/the/idea',
                  'http://www.domainname.com/whatever/you/get/the/idea',
                  'http://www.domainname.com',
                  'https://s1.s2.domainname.com/321.com/www.654.vom/',
                  'https://s1.domainname.com',
                  'https://s1.domainname.com/domain1.com/',
                  'https://domain1.com.domainname.com');
    
    $domains = array_map(function ($url) {
        $chunks = explode('.', parse_url($url,PHP_URL_HOST));
        $first_level_dn = array_pop($chunks);
        return array_pop($chunks) . '.' . $first_level_dn;
    }, $urls);
    
    print_r($domains);
    

    【讨论】:

    • 谢谢。我测试你的代码。它的作品,但我需要正则表达式来获取域名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2011-07-21
    • 1970-01-01
    相关资源
    最近更新 更多