如何获取没有子域名的NSURL主机?
以下是一些输入 应保留的部分以粗体显示,应删除的部分以斜体显示:
server.com
万维网。的的 server.com
媒体。的的 server.com
host1.media。 server.com
到目前为止,听起来很容易实现 但它也应该正确处理以下输入,以及任何我认为没有在任何相关RFC中普遍接受或指定的奇怪情况。
server.co.uk
媒体。的的 server.co.uk
的 127.0.0.1
...
答案 0 :(得分:3)
请参阅Extract domain name from a host name此问题似乎没有一个简单的解决方案。
答案 1 :(得分:0)
这不能解答难题,但是如果您将URL与特定域的白名单匹配(就像我在发现此问题时那样),您可以使用这样的代码来检查:
NSArray *domainsForVideo = @[@"youtube.com",
@"youtu.be",
@"videoschool.pvt.k12.md.us",
@"vimeo.com"];
NSString *host = [url host]; //where URL is some NSURL object
BOOL hostMatches = NO;
for (NSString *testHost in domainsForVideo) {
if ([[host lowercaseString] isEqualToString:testHost]) hostMatches = YES; // matches youtube.com exectly
NSString *testSubdomain = [NSString stringWithFormat:@".%@",testHost]; // matches www.youtube.com but not fakeyoutube.com
if ([[host lowercaseString] rangeOfString:testSubdomain].location != NSNotFound) hostMatches = YES;
}
if (hostMatches) {
// this is a Video URL
}