1

我想获取任何 url 的主机名,例如,如果我有以下 url

$url = "http://www.google.com";

然后我只想获取google点之后.和扩展点之前的内容.,以便它可以应用于所有类型的网址。

所以结果应该是google!我认为这可能需要正则表达式或任何想法如何做到这一点,谢谢。

4

2 回答 2

7

你可以试试

echo __extractName("http://google.com"); 
echo __extractName("http://office1.dept1.google.com");
echo __extractName("http://google.co.uk");


function __extractName($url)
{
  $domain = parse_url($url , PHP_URL_HOST);
  if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $list)) {
    return substr($list['domain'], 0,strpos($list['domain'], "."));
  }
  return false;
}

输出

google
google 
google 
于 2012-10-02T11:38:14.640 回答
2

您应该看一下 PHP 的parse_url()函数,它返回构成 URL 的各种组件的关联数组。

$url = "http://www.google.com";
print_r(parse_url($url)); 

将回显以下数组。

Array ( [scheme] => http [host] => www.google.com ) 

上面的函数只是给你一个开始。查看以下 Stackoverflow 档案,了解如何从此处获取它。

PHP从子域获取域名

在php中获取域名(不是子域)

PHP函数获取URL的子域

编辑(更多档案 - 我不确定你用谷歌搜索/尝试了什么)

如何从 URL 中获取域名

从 HTTP_REFERER 中提取方案和主机

于 2012-10-02T11:22:49.723 回答