我想获取任何 url 的主机名,例如,如果我有以下 url
$url = "http://www.google.com";
然后我只想获取google
点之后.
和扩展点之前的内容.
,以便它可以应用于所有类型的网址。
所以结果应该是google
!我认为这可能需要正则表达式或任何想法如何做到这一点,谢谢。
你可以试试
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
您应该看一下 PHP 的parse_url()函数,它返回构成 URL 的各种组件的关联数组。
$url = "http://www.google.com";
print_r(parse_url($url));
将回显以下数组。
Array ( [scheme] => http [host] => www.google.com )
上面的函数只是给你一个开始。查看以下 Stackoverflow 档案,了解如何从此处获取它。
编辑(更多档案 - 我不确定你用谷歌搜索/尝试了什么)