如何在php中从URL中剥离域名?
我正在寻找一种方法(或函数)来剥离馈送到函数中的任何URL的domain.ext部分。域名后缀可以是任何内容(.com,.co.uk,.nl,.whatever),并且输入其中的URL可以是从 http://www.domain.com 到 www.domain.com/path/script.php?=whatever
这样做的最佳方法是什么?
我正在寻找一种方法(或函数)来剥离馈送到函数中的任何URL的domain.ext部分。域名后缀可以是任何内容(.com,.co.uk,.nl,.whatever),并且输入其中的URL可以是从 http://www.domain.com 到 www.domain.com/path/script.php?=whatever
这样做的最佳方法是什么?
parse_url将 URL 转换为关联数组:
php > $foo = "http://www.example.com/foo/bar?hat=bowler&accessory=cane";
php > $blah = parse_url($foo);
php > print_r($blah);
Array
(
[scheme] => http
[host] => www.example.com
[path] => /foo/bar
[query] => hat=bowler&accessory=cane
)
您还可以编写正则表达式来准确获取所需的内容。
这是我的尝试:
$pattern = '/\w+\..{2,3}(?:\..{2,3})?(?:$|(?=\/))/i';
$url = 'http://www.example.com/foo/bar?hat=bowler&accessory=cane';
if (preg_match($pattern, $url, $matches) === 1) {
echo $matches[0];
}
输出为:
example.com
此模式还考虑了“example.com.au”等域。
注意:我没有查阅相关的 RFC。