目前,我可以通过以下方式删除网址字符串的域名:
$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
问题是我想要包含子域(如果存在)。
例如:
$url = 'http://sub.domain.example.com/foo/bar?hat=bowler&accessory=cane';
应该回应:
sub.domain.example.com
我怎样才能实现这种疯狂?
答案 0 :(得分:4)
您可以使用parse_url()功能:
$str = 'http://sub.domain.example.com/foo/bar?hat=bowler&accessory=cane';
$parts = parse_url($str);
print_r($parts);
输出:
Array
(
[scheme] => http
[host] => sub.domain.example.com
[path] => /foo/bar
[query] => hat=bowler&accessory=cane
)
因此:
echo $parts['host'];
给你:
sub.domain.example.com