我正在解析几个网址,需要从主机中提取子网域。最简单的方法是使用“url.Parse()”获取主机,然后将主机拆分为“。”。如果有3个部分,则子域是第一部分。这适用于美国顶级域名(TLD),但有没有更好的方法来提取适用于所有顶级域名的子域名?例如:
url = "www.google.com" // "www"
url2 = "google.com" // ""
url3 = "www.google.co.uk" // "www.google"
url4 = "google.co.uk" // "google"
parts, err := url.Parse(url)
THX!
答案 0 :(得分:4)
使用PublicSuffix:
suffix, _ := publicsuffix.PublicSuffix(host)
sub := host[:len(host) - len(suffix) - 1]