如何使用php获取URL主机

时间:2012-10-02 11:10:08

标签: php regex url

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

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

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

所以结果应该是google!我认为这可能需要正则表达式或某种方式 任何想法怎么做,谢谢。

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:2)

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

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

将回显以下数组。

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

上述功能只会给你一个开始。请查看以下Stackoverflow存档,了解如何从此处获取它。

PHP Getting Domain Name From Subdomain

Get domain name (not subdomain) in php

PHP function to get the subdomain of a URL

编辑(少数档案 - 我不确定你用Google搜索/试过了什么)

how to get domain name from URL

Extract Scheme and Host from HTTP_REFERER