我在互联网上搜索,我找到了这个代码来查找域名
function get_domain($url)
{
$pieces = parse_url($url);
$domain = isset($pieces['host']) ? $pieces['host'] : '';
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs))
{
return $regs['domain'];
}
return false;
}
适用于http://www.google.com或http://www.google.co.uk
但它不适用于test.web.tv.
任何人都可以帮助我?
我如何找到min domain?
由于
答案 0 :(得分:1)
函数parse_url()
需要有效的URL。在这种情况下,test.web.tv
无效,因此parse_url()
不会为您提供预期的结果。为了解决这个问题,您可以先检查URL是否有http://
前缀,如果没有,请手动添加前缀。这样,您可以绕过parse_url()
的限制。
但是,我认为最好使用以下功能。
function getDomain($url)
{
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
$domain = implode('.', array_slice(explode('.', parse_url($url, PHP_URL_HOST)), -2));
return $domain;
}
说明:
PHP_URL_HOST
标记将给定的网址传递给parse_url()
并获取完整的主机.
作为分隔符implode()
测试:
echo getDomain('test.web.tv');
输出:
web.tv
注意:这是我自己的答案here的修改版本,加上Alix的回答here。
此功能目前不适用于.co.uk
域名扩展程序 - 您可以轻松添加支票并相应更改array_slice
功能。