【问题标题】:Getting domain extension from URL? [duplicate]从 URL 获取域扩展? [复制]
【发布时间】:2013-07-05 11:12:46
【问题描述】:

我想从 url 获取域扩展。例如。 .com、.net 等

我用过这个:

$extension = pathinfo($_SERVER['SERVER_NAME'], PATHINFO_EXTENSION);

我只是想知道是否有更好的方法使用 parse_url?

【问题讨论】:

  • 更好地使用 $_SERVER['HTTP_HOST']
  • 你想如何处理.co.uk

标签: php


【解决方案1】:

使用parse_url()。比如:

$host = parse_url('http://www.google.co.uk/test.html');
preg_match('/(.*?)((\.co)?.[a-z]{2,4})$/i', $host['host'], $m);

$ext = isset($m[2]) ? $m[2]: '';

编辑:使用来自 answer 的正则表达式修复。也支持 .co.uk 之类的扩展名。

【讨论】:

  • 这不适用于 .co.uk 等域
  • @user1794021,试试修改后的版本。
  • 返回Undefined index: host
  • (.*?)((?:\.co|.com)?.[a-z]{2,4})$ 如果您想支持 .com.xx 扩展名(例如 .com.au)。
【解决方案2】:

您可以像这样轻松拆分请求的 URI:

function tld( $uri ) {
    $parts = explode('.', $uri);

    return (sizeof($parts) ? ('.' . end($parts)) : false;
}

所以你可以这样做:

if(!tld('googlecom')) // does not contain an ending TLD

if(tld('google.com')) // this is a valid domain name; output: ".com"

或者你可以使用:

echo $_SERVER['SERVER_NAME'];

所以在我看来,最好的用法示例是:

echo tld($_SERVER['SERVER_NAME']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多