您可以parse_url
用于解析 URL 并获取根域,如下所示:
http://
如果不存在,则添加到 URL
PHP_URL_HOST
使用常量获取 URL 的主机名部分
explode
一个点 ( .
)的 URL
- 使用获取数组的最后两个块
array_slice
- 内爆结果数组以获取根域
我做了一个小功能(这是我自己的答案的修改版本):
function getRootDomain($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;
}
测试用例:
$a = 'http://example.com';
$urls = array(
'example.com/test',
'example.com/test.html',
'www.example.com/example.html',
'example.net/foobar',
'example.org/bar'
);
foreach ($urls as $url) {
if(getRootDomain($url) == getRootDomain($a)) {
echo "Root domain is the same\n";
}
else {
echo "Not same\n";
}
}
输出:
Root domain is the same
Root domain is the same
Root domain is the same
Not same
Not same
注意:此解决方案并非万无一失,并且对于诸如此类的 URL 可能会失败example.co.uk
,您可能需要进行额外检查以确保不会发生这种情况。
演示!